<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                [TOC] ### 示例說明 巧用FiddlerScript,將抓包獲取到的響應信息轉發到統計服務上,并且設置定時器,每隔n分鐘后重新發起request請求,實現定時監控微信文章的互動量變化。 ### 第一步,抓包分析 在PC微信中打開微信文章,通過Fiddler抓包分析可知,統計接口為 ``` https://mp.weixin.qq.com/mp/getappmsgext ``` 其響應內容格式如下 ``` { "advertisement_info": [], "appmsgstat": { "show": true, "is_login": true, "liked": false, "read_num": 30, "like_num": 0, "ret": 0, "real_read_num": 0, "version": 1, "prompted": 1, "like_disabled": true, "style": 1 }, "reward_head_imgs": [], "base_resp": { "wxtoken": 777 }, "more_read_list": [], "friend_subscribe_count": 0, "related_tag_article": [], "original_article_count": 0, "video_share_page_tag": [], "related_tag_video": [] } ``` ### 第二步,編寫FiddlerScript腳本 在`OnBeforeResponse`代碼塊內,新增關鍵代碼如下 ``` //過濾無關請求,只關注特定請求 if (oSession.fullUrl.Contains("/mp/getappmsgext")) { var current_time = DateTime.Now; // 保存請求信息 //oSession.utilDecodeResponse();//消除保存的請求可能存在亂碼的情況 //var fso; //var file; //fso = new ActiveXObject("Scripting.FileSystemObject"); //文件保存路徑,可自定義 //file = fso.OpenTextFile("D:\\Sessions.txt",8 ,true, true); //file.writeLine("Response code: " + oSession.responseCode); //file.writeLine("Response body: " + oSession.GetResponseBodyAsString()); //file.writeLine("\n"); //file.close(); var res = oSession.GetResponseBodyAsString() if(res.Contains("read_num")){ // 獲取到閱讀數 FiddlerObject.log(res); //數據統計開始:把內容通過ajax http發送其它地方 var _xhr = new ActiveXObject('Microsoft.XMLHTTP'); var url = 'http://localhost:8000/wx/monitor/'; //發送的數據參數 var param = { point: oSession.GetResponseBodyAsString() }; var par = ''; for (var i in param) { var _data = escape(param[i]); par += par ? ("&" + i + "=" + _data) : (i + "=" + _data); } //不需要返回值所以寫啦個空回調 _xhr.onreadystatechange = function() {} _xhr.open('POST', url, true); _xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); _xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest"); _xhr.send(par); //----數據統計結束----- // 等待n分鐘后,重新發起請求,實行文章互動量監控 while (true){// 進入死循環 var wait_time=5; // 設置等待重試時間 if((DateTime.Now-current_time).Minutes==wait_time){ var oSD = new System.Collections.Specialized.StringDictionary(); FiddlerApplication.oProxy.SendRequest(oSession.oRequest.headers, oSession.requestBodyBytes, oSD, null); FiddlerObject.log("auto request done..."); break;//注意退出死循環 } //if controll end } // while loop end }else{ // 沒有獲取到閱讀數,彈窗提示用戶重新授權 FiddlerObject.alert("請重新打開微信文章進行授權"); } // if end } // if controll end ``` ### 第三步,編寫統計接口 django views.py: ``` @csrf_exempt def wx_monitor(request): """微信單帖監控""" if request.method == "POST": point = json.loads(request.POST.get("point", {"msg": "point is null"})) if point: appmsgstat = point.get("appmsgstat") otherStyleTime = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(point.get("timestamp"))) ret = { "appmsgstat": appmsgstat, "timestamp": otherStyleTime } add_db_data(ret) return JsonResponse({"msg": "success"}) monitor_list = get_db_info().get("pt_tmp_db") return render(request, 'jira_report/monitor_list.html', locals()) def get_db_info(): tmp_db = os.path.join(os.path.dirname((__file__)), "pt_db.json") with open(tmp_db, "r", encoding="utf8") as fp: db_data = json.load(fp) return db_data def add_db_data(ret): tmp_db = os.path.join(os.path.dirname((__file__)), "pt_db.json") db_data = get_db_info() db_data.get("pt_tmp_db").append(ret) with open(tmp_db, "w", encoding="utf8") as fp: json.dump(db_data, fp, indent=4, ensure_ascii=False) return db_data ``` >[info] 這里以django為例,就是簡單的接收在FiddlerScript中發送過來的請求,將監控到的數據存儲起來,然后在頁面中顯示。 ### 第四步,開始監控數據 微信的統計接口,每隔30分鐘會失效,所以在FiddlerScript中,會有個if判斷處理,當沒有統計數據返回時,提醒用戶重新打開微信文章,生成新的統計請求。 ![](https://box.kancloud.cn/6299d646b19484f0f493d778c47f36e4_1519x793.png) 統計結果如下: ![](https://box.kancloud.cn/750ec8061c8d8fca9fcbb64aebc55856_1030x230.png) <hr style="margin-top:100px"> :-: ![](https://box.kancloud.cn/331f659e8e6cddb0d9f182e00e32803f_258x258.jpg) ***微信掃一掃,關注“python測試開發圈”,獲取更多測試開發分享!***
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看