只需兩步,教你如何自動發送微信消息


前段時間突然對微信里的一些消息感到厭煩,如果能有微軟小冰這樣的智能機器人幫我自動回復消息就好了。想到就開始動手。

第一步:

登錄微信網頁版,過程略。

第二步:

選擇一個好友,按下F12,找到console控制台,輸入如下代碼。

var appElement = document.querySelector('[ng-controller=chatSenderController]');
var $scope = angular.element(appElement).scope();
$scope.editAreaCtn = "想說的話";
$scope.sendTextMessage();

按下回車后效果

image

到此為止,兩步已經結束。

 

如果要定時,將$scope.sendTextMessage();改造,加上setTimeout即可。

setTimeout(function(){
    $scope.sendTextMessage();
},1000);

重復發送同理,只是需要每次給輸入框給值

var appElement = document.querySelector('[ng-controller=chatSenderController]');
var $scope = angular.element(appElement).scope();
setInterval(function(){
    $scope.editAreaCtn = "想說的話";
    $scope.sendTextMessage();
},1000);

 

-------------------------------------------------------------分割線----------------------------------------------------------

下面是高級攻略。我們要完成的是引入機器人自動回復,前面只是准備工作。機器人推薦圖靈機器人http://www.tuling123.com/

圖靈機器人API:http://www.tuling123.com/openapi/api?key=******&info=你好

其中key就是開發者key,注冊賬號可以免費獲得。info為消息內容。

在瀏覽器地址欄輸入可以看到結果,為一個json串。

image

機器人准備好了,我們開始吧。

第一步:獲取對方發送的消息,可使用如下代碼:

function getChatInfo(){
    var info = '';
    var length = document.getElementsByClassName('left').length;
    if(length > 0){
        info = document.getElementsByClassName('left')[length-1].getElementsByTagName("pre")[0].innerText;
    }
    return info;
}

 

第二步:根據對方聊天內容,獲取圖靈機器人的返回值:

主要依靠XMLHttpRequest對象。

var appElement = document.querySelector('[ng-controller=chatSenderController]');
var $scope = angular.element(appElement).scope(); 
var xmlhttp = new XMLHttpRequest();
function callback(){
    if (xmlhttp.readyState == 4 && xmlhttp.status == 200){
        var responseText = xmlhttp.responseText;
        var str = eval("("+ responseText +")");
        $scope.editAreaCtn = str.text;
        $scope.sendTextMessage();
    }    
}
xmlhttp.onreadystatechange = callback;
var oldInfo = '';
function getChatInfo(){
    var info = '';
    var length = document.getElementsByClassName('left').length;
    if(length > 0){
        info = document.getElementsByClassName('left')[length-1].getElementsByTagName("pre")[0].innerText;
    }
    return info;
}
setInterval(function(){
    var info = getChatInfo();
    if(info != '' && info != oldInfo){
        xmlhttp.open("GET","http://www.tuling123.com/openapi/api?key=******&info=" + info, false);
        xmlhttp.send();
        oldInfo = info;
    }
}, 1000);

 

這時我們會遇到第一個挑戰,跨域。如果是自己的服務器,自然好解決,設置下就OK。但是這是企鵝的,就不那么容易了。好在,發現了IE瀏覽器的一個特性,可以設置瀏覽器,允許跨域。放個鏈接好了http://jingyan.baidu.com/article/c33e3f48857933ea15cbb50a.html 

 

跨域解決了,你以為好了嗎,too young。 接下來遇到第二個挑戰。https協議下不允許進行http請求。兵來將擋,水來土掩。自己搭建一個https 的WEB應用,然后重定向到http請求,自然就可以越過這個限制了。再放個鏈接:使用Java工具生成服務器證書和客戶端端證書,安裝並且設為信任。然后使用Tomcat搭建Web應用 http://jingyan.baidu.com/article/a948d6515d3e850a2dcd2ee6.html 當然別的Web應用也可以,拋磚引玉。搭建成功后再寫個servlet。

public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        
        String info = request.getParameter("info");
        String url = "http://www.tuling123.com/openapi/api?key=******&info=" + info;
        response.sendRedirect(url);
    }

xmlhttp.open()中的鏈接自然要改成這個:

xmlhttp.open("GET","https://localhost:8443/directServer/servlet/DirectServlet?info=" + info, false);

 

到這里也差不多要結束了,感謝看到這塊的同學。當然最終的結果是,沒成功。你們不要打我啊。雖然自己生成證書,但瀏覽器還是不信任,最終沒能發出get請求。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM