當域名被微信封禁時,訪問的鏈接會先經過微信服務器檢測,如果正常就放行,否則會重定向跳轉到下面這個鏈接(修" />

国产成人精品无码青草_亚洲国产美女精品久久久久∴_欧美人与鲁交大毛片免费_国产果冻豆传媒麻婆精东

15158846557 在線咨詢 在線咨詢
15158846557 在線咨詢
所在位置: 首頁 > 營銷資訊 > 網(wǎng)站運營 > 如何檢測域名或網(wǎng)址被微信停止訪問了?

如何檢測域名或網(wǎng)址被微信停止訪問了?

時間:2023-11-20 12:48:01 | 來源:網(wǎng)站運營

時間:2023-11-20 12:48:01 來源:網(wǎng)站運營

如何檢測域名或網(wǎng)址被微信停止訪問了?:前一陣子,我們公司剛經歷了活動域名被微信封禁,后來我們進行了深刻的復盤。

當域名被微信封禁時,訪問的鏈接會先經過微信服務器檢測,如果正常就放行,否則會重定向跳轉到下面這個鏈接(修改這個鏈接的參數(shù),有趣的現(xiàn)象會發(fā)生)

https://weixin110.qq.com/cgi-bin/mmspamsupport-bin/newredirectconfirmcgi?main_type=2&evil_type=20&source=2&url=https://maimai.cn

也就是這個萬惡的頁面

事后想到的兩個解決方案。

  1. 通過流量監(jiān)測,但對于流量不太大或波動很大的網(wǎng)站,很容易誤報,而且有很大的時間滯后性
  2. 通過模擬器來嘗試用微信APP來訪問源網(wǎng)站,如果發(fā)現(xiàn)異常(重定向或截圖異?;蜃グ霈F(xiàn)weixin110相關等),則直接報警,但這部分的實現(xiàn)成本應該比較高(自己沒有親自嘗試)

原理

回到剛才提到重定向方式,即訪問的域名會首先經過微信服務器的檢測,前提是只有打開的過程中才會檢測,這正是這件事兒的難點。換個思路想下,如果我們能夠讓微信自己的域名經過微信的檢測,那么這件事就成了。翻遍了微信官方各種api,功夫不負有心人,找到了【長鏈接轉成短鏈接】,可以把我們的鏈接轉成微信自己的鏈接,這樣判斷短鏈接的重定向鏈接即可得知是否被封禁。

實現(xiàn)方案

長鏈轉短鏈需要三個參數(shù)

關鍵的問題來了,access_token是從微信獲取來的,獲取access_token需要在微信后臺配置白名單,并且每天限額是1000000次

access_token是公眾號的全局唯一接口調用憑據(jù),公眾號調用各接口時都需使用access_token
但是,很多網(wǎng)站是沒有公眾號的,或者說100萬的調用次數(shù)都不夠我揮霍的,那怎么辦?答案是我們可以使用微信公眾平臺測試賬號,它的優(yōu)勢是無需公眾帳號、快速申請接口(只要有微信號就可以),可以直接體驗和測試公眾平臺所有高級接口功能,而且不需要綁定ip白名單也可以獲得access_token,最大的優(yōu)勢是長鏈轉短鏈的服務貌似沒有調用次數(shù)限制(我親測試了很多,發(fā)現(xiàn)使用次數(shù)并沒有變化,雖然文檔上寫了1000次)。

微信公眾平臺測試賬號鏈接:http://mp.weixin.qq.com/debug/cgi-bin/sandboxinfo?action=showinfo&t=sandbox/index

所有的準備工作已經ready,那么可以show代碼了

獲取access_token

/** * 根據(jù)appid和app appsecret來獲取acess_token * return @param {String} */async getAccessToken() { let query = { appid: this.appid, secret: this.appsecret, grant_type: 'client_credential' }; let url = `https://api.weixin.qq.com/cgi-bin/token?${querystring.stringify(query)}`; return await this.request(url);}長鏈轉短鏈

/** * 通過微信api生成短鏈 * @param {String} req_url 待檢測url */async createShortUrl(req_url) { var requestData = { "access_token": this.access_token, "action": "long2short", "long_url": req_url } const url = `https://api.weixin.qq.com/cgi-bin/shorturl?access_token=${this.access_token}`; let body = await this.request(url, { method: "POST", json: true, headers: { "content-type": "application/json", }, body: requestData }); return body && body.short_url;}檢測重定向鏈接來判斷是否被微信封禁

/** * 根據(jù)重定向之后的host是否為weixin110.qq.com來檢測url是否被微信封禁 * @param {String} url 待檢測短鏈接url */checkDomainBanned(url) { return new Promise(function (resolve, reject) { return request(url, function(err, res, body) { if (!err) { if (res && res.request && res.request.uri && res.request.uri.host === 'weixin110.qq.com') { resolve({ code: -1, msg: 'banned' }); } else { resolve({ code: 0, msg: 'ok' }); } } else { reject(err); } }) })}最后測試結果如下(打碼的網(wǎng)址大家可以自行想象)

尾聲

居然很多網(wǎng)站提供類似的付費服務,而且價格不菲!

最后,再三考慮,決定將代碼開源,感覺身前的紅領巾更鮮艷了!


更新于2022年7月3日

評論區(qū)之前很多人反饋說微信長鏈轉短鏈失效的問題,實際上是因為官方已經停止該接口。后來一直因為太忙(主要是懶)沒有更新,最新的方式其實更加簡單,大致的原理就是

微信打開鏈接時會先過一層安全檢測,再根據(jù)檢測結果來跳轉相應的頁面,因此我們可以通過監(jiān)測安全檢測的響應內容,來判斷外部鏈接的安全性
我們根據(jù)這個原理,提前做一個預監(jiān)測發(fā)現(xiàn)外部鏈接經過安全檢測之后的重定向是否為安全鏈接即可。安全檢測鏈接為 https://mp.weixinbridge.com/mp/wapredirect?url=[req_url]

已經將具體的邏輯更新到開源項目上,大家又可以愉快的玩耍咯 lol

關鍵詞:停止,訪問

74
73
25
news

版權所有? 億企邦 1997-2025 保留一切法律許可權利。

為了最佳展示效果,本站不支持IE9及以下版本的瀏覽器,建議您使用谷歌Chrome瀏覽器。 點擊下載Chrome瀏覽器
關閉