微信域名检测、防封,微信跳转技术揭秘(一) -- 域名检测原理及防封方案
<p> </p><ul>
<li><span style="font-family: 幼圆">背景</span></li>
<li><span style="font-family: 幼圆">一、微信检测手段</span></li>
<li><span style="font-family: 幼圆">二、域名被封常见因素</span></li>
<li><span style="font-family: 幼圆">三、域名检测原理</span></li>
<li><span style="font-family: 幼圆">四、检测代码(C#)</span></li>
<li><span style="font-family: 幼圆">五、防封方案</span></li>
<li>六、参考资料</li>
</ul>
<p><span id="background" style="font-family: 幼圆; font-size: 18pt">背景</span></p>
<p><span style="font-family: 幼圆">最近因为业务需要,在研究微信跳转,域名防封检测等东西,网上搜集了很多很多资料,发现居然这么简单的一点东西 居然有人专门做成系统拿去卖钱.. 系统功能就只是个微信跳转而已,微信跳外部浏览器 或者浏览器跳到微信内.. 而且搜出来很多家这种收费的系统,界面都一模一样.. 真的是无语了。听说这还属于灰产... 我把这些弄出来是不是也可以拿去卖钱了?哈哈哈。</span></p>
<p><span style="font-family: 幼圆"> </span></p>
<p><span style="font-family: 幼圆">在网上搜索了很多相关的资料和帖子,发现很多都是大同小异的,原理其实都差不多, 但是搜了很多,它就是不把关键代码和原理告诉你... 也是,告诉你了 还怎么赚钱呢,哈哈哈.不过既然是做技术的,既然人家不告诉你,那就只要自己研究了。研究了几天,算是有点结果了。就把所有看过的帖子里例举出来的原理和方案,以及我自己的总结写一下。</span></p>
<p> </p>
<p><span id="section1" style="font-size: 18pt; font-family: 黑体">一、微信检测手段</span></p>
<p><span style="font-family: 幼圆">微信检测违规的两个手段:a)系统的自动检测 b)微信工作人员的人工检测。</span><br><span style="font-family: 幼圆">1、人工的检测重要是源于多用户投诉举报,微信后台有一个警报机制,在多少时间内积累充足的举报次数,将列入风险名单,对风险名单中 筛出来的,工作人员可能就会介入检测来确认</span><br><span style="font-family: 幼圆">2、微信后台自动检测(检测页面内容、关键词、描述和图片,URL、IP、友链黑名单等等...)</span></p>
<p><span style="font-family: 幼圆">当微信域名被屏蔽被拦截后,如下图,说明已经进入黑名单了</span></p>
<p> <img src="https://img2018.cnblogs.com/blog/1631302/201905/1631302-20190514161618927-980068304.png" alt=""></p>
<p><span id="section2" style="font-size: 18pt; font-family: 幼圆">二、域名被封常见因素</span></p>
<p><span style="font-family: 幼圆; font-size: 14px">域名被封,确实有很多因素,简单列举下:</span></p>
<p><span style="font-family: 幼圆; font-size: 14px">1、域名历史,有过违规记录,风险名单中的重点高频检测。;</span><br><span style="font-family: 幼圆; font-size: 14px">2、qq和微信是不同的监测机制,同时两边推广很危险,会被封的很快;</span><br><span style="font-family: 幼圆; font-size: 14px">3、网站流量大,微信里有个传播2000次就被屏蔽的问题,比如分享赚钱的平台;</span><br><span style="font-family: 幼圆; font-size: 14px">4、诱导分享传播,即使是合法营销,也会被封;</span><br><span style="font-family: 幼圆; font-size: 14px">5、内容 标题 关键词 描述 主体 页头页脚 有风险违规词的,被系统轮询测到了;</span><br><span style="font-family: 幼圆; font-size: 14px">6、项目竞争大,同行举报过多,有人开发了模拟人为无限次举报的软件;</span><br><span style="font-family: 幼圆; font-size: 14px">7、有的是封链接不封域名,因为是第三方平台,比如有赞平台等。</span><br><span style="font-family: 幼圆; font-size: 14px">8、 关联,服务器 IP 友链 邻居有违规的,重点检测。</span><br><span style="font-family: 幼圆; font-size: 14px">9、图片,视频,对于明显特征或复用度高的违规图片,系统是能识别的</span></p>
<p> </p>
<p><span id="section3" style="font-size: 18pt; font-family: 幼圆">三、域名检测方法</span></p>
<p><span style="font-size: 14px">搜索资料的过程中,发现了好几个说可以检测的方法,但实际上有的方法已经失效,有的方法效果也不太好:</span></p>
<p><span style="color: rgba(255, 0, 0, 1); font-family: 幼圆"><span style="font-size: 14px">1、利用</span>微信公众号接口 生成微信短连接</span></p>
<p><span style="font-family: 幼圆"> 看别人帖子里说的检测原理是:</span></p>
<p><span style="font-family: 新宋体"><span style="font-family: 幼圆"> 1)生成短短链接后,程序定期去请求打开地址,判断是否重定向到 weixin110.qq.com/xxxx 等地址去. 如果重定向过去了则说明基本是打不开了。</span></span></p>
<p><span style="font-family: 幼圆"> 2)还有的是程序请求打开地址,然后用程序识图 看界面上是否存在红色大圆点..如果存在则说明被封禁了,需要换个地址重新生成. 大概就这两种.. </span></p>
<p><span style="font-family: 幼圆"> 这种方式至少看到过两篇文章说过,但是效果好像都不太理想,有的甚至生成短链接后秒封..而且需要微信公众号操作,我这边业务不设计到这个,也没有运营的公众号,所以没有深究这个方法。</span></p>
<p><span style="color: rgba(255, 0, 0, 1); font-family: 幼圆">2、网页版微信抓包</span></p>
<p> 此方法意思也就是 通过抓包,抓取打开微信里的链接时请求校验地址是否合法的接口, 但是这个方法我也尝试过,抓不到接口,正常链接跳转没有校验的请求,被封禁的地址 就直接打不开了。后面也试了网上找的其他接口,也无效。</p>
<p> 请求的都是 weixin110.qq.com 开头的地址.. 但是实际上没什么用..比如下面这个... 点击就没反应</p>
<p> <span style="font-family: verdana, geneva">https://weixin110.qq.com/cgi-bin/mmspamsupport-bin/newredirectconfirmcgi?main_type=2&evil_type=20&source=2&url=https%3A%2F%2Fcandy.one</span></p>
<p><span style="font-family: verdana, geneva; color: rgba(255, 0, 0, 1)">3、“官方”检测接口</span></p>
<p><span style="font-family: verdana, geneva"> 下面这个是网上找到的另外一个说是可以检测地址的接口,看这Url确实像是个检测地址的接口对吧?呵呵,但是实际也没什么用..打开没反应,不跳转,页面也没有任何输出..</span></p>
<p><span style="font-family: verdana, geneva"> https://wx2.qq.com/cgi-bin/mmwebwx-bin/webwxcheckurl?requrl=http%3A%2F%2Fwww.penhot.com</span></p>
<p><strong><span style="font-family: verdana, geneva; color: rgba(51, 153, 102, 1)">4、可用接口</span></strong></p>
<p><span style="font-family: verdana, geneva"> <span style="font-family: verdana, geneva">http://qbview.url.cn/getResourceInfo?appid=31&url=http://www.wangzhesha.com</span></span></p>
<p><span style="font-family: verdana, geneva"> 找了很久终于才找到这个可以检测的接口.. 虽然表现形式上 算不上是真正的API形式吧.. 但是也能检测出是否有没有被封禁来。</span></p>
<p><span style="font-family: verdana, geneva"> 后面的url改成你想要检测的地址,如果没有被封禁,则会跳转到目标地址去,如果地址被封禁了,则会在页面上提示出来。那么如何用程序检测出来呢?道理也很简单,判断请求响应的结果是否重定向了就行。代码如下</span></p>
<p style="margin-left: 30px"><img src="https://img2018.cnblogs.com/blog/1631302/201905/1631302-20190514164512918-1155976308.png" alt=""></p>
<p style="margin-left: 30px"> </p>
<p><span id="section4" style="font-size: 18pt; font-family: 幼圆">四、检测代码</span></p>
<p><span style="font-size: 14px; font-family: 幼圆"> </span></p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 128, 1)"> 1</span> <span style="color: rgba(0, 0, 0, 1)">
</span><span style="color: rgba(0, 128, 128, 1)"> 2</span> <span style="color: rgba(0, 0, 255, 1)">public</span><span style="color: rgba(0, 0, 0, 1)"> ActionResult Check()
</span><span style="color: rgba(0, 128, 128, 1)"> 3</span> <span style="color: rgba(0, 0, 0, 1)">{
</span><span style="color: rgba(0, 128, 128, 1)"> 4</span> <span style="color: rgba(0, 0, 255, 1)">var</span> url = Request[<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">Url</span><span style="color: rgba(128, 0, 0, 1)">"</span>]?.ToString() ?? <span style="color: rgba(128, 0, 0, 1)">""</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)"> 5</span> <span style="color: rgba(0, 0, 255, 1)">try</span>
<span style="color: rgba(0, 128, 128, 1)"> 6</span> <span style="color: rgba(0, 0, 0, 1)"> {
</span><span style="color: rgba(0, 128, 128, 1)"> 7</span> <span style="color: rgba(0, 0, 255, 1)">var</span> strUrl = <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">http://qbview.url.cn/getResourceInfo?appid=31&url=</span><span style="color: rgba(128, 0, 0, 1)">"</span> +<span style="color: rgba(0, 0, 0, 1)"> url;
</span><span style="color: rgba(0, 128, 128, 1)"> 8</span> HttpWebRequest httpWebRequest =<span style="color: rgba(0, 0, 0, 1)"> (HttpWebRequest)WebRequest.Create(strUrl);
</span><span style="color: rgba(0, 128, 128, 1)"> 9</span> httpWebRequest.Method = <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">GET</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)">10</span> <span style="color: rgba(0, 128, 0, 1)">// </span><span style="color: rgba(0, 128, 0, 1)">一定要设置 AllowAutoRedirect 为false,否则如果请求包含重定向,则请求的响应会返回重定向之后的页面内容...</span>
<span style="color: rgba(0, 128, 128, 1)">11</span> httpWebRequest.AllowAutoRedirect = <span style="color: rgba(0, 0, 255, 1)">false</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)">12</span> <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">httpWebRequest.ContentType = "application/x-www-form-urlencoded";</span>
<span style="color: rgba(0, 128, 128, 1)">13</span> HttpWebResponse httpWebResponse =<span style="color: rgba(0, 0, 0, 1)"> (HttpWebResponse)httpWebRequest.GetResponse();
</span><span style="color: rgba(0, 128, 128, 1)">14</span> Stream responseStream =<span style="color: rgba(0, 0, 0, 1)"> httpWebResponse.GetResponseStream();
</span><span style="color: rgba(0, 128, 128, 1)">15</span> StreamReader streamReader = <span style="color: rgba(0, 0, 255, 1)">new</span><span style="color: rgba(0, 0, 0, 1)"> StreamReader(responseStream, Encoding.UTF8);
</span><span style="color: rgba(0, 128, 128, 1)">16</span> <span style="color: rgba(0, 0, 255, 1)">string</span> strResult =<span style="color: rgba(0, 0, 0, 1)"> streamReader.ReadToEnd();
</span><span style="color: rgba(0, 128, 128, 1)">17</span> <span style="color: rgba(0, 0, 255, 1)">int</span> result = (<span style="color: rgba(0, 0, 255, 1)">int</span><span style="color: rgba(0, 0, 0, 1)">)httpWebResponse.StatusCode;
</span><span style="color: rgba(0, 128, 128, 1)">18</span> <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 若302跳转了则表明域名正常, 没有跳转说明被封禁了</span>
<span style="color: rgba(0, 128, 128, 1)">19</span> <span style="color: rgba(0, 0, 255, 1)">return</span> Content(result == <span style="color: rgba(128, 0, 128, 1)">302</span> ? <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">1</span><span style="color: rgba(128, 0, 0, 1)">"</span> : <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">0</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 128, 128, 1)">20</span> <span style="color: rgba(0, 0, 0, 1)"> }
</span><span style="color: rgba(0, 128, 128, 1)">21</span> <span style="color: rgba(0, 0, 255, 1)">catch</span><span style="color: rgba(0, 0, 0, 1)"> (Exception ex)
</span><span style="color: rgba(0, 128, 128, 1)">22</span> <span style="color: rgba(0, 0, 0, 1)"> {
</span><span style="color: rgba(0, 128, 128, 1)">23</span> <span style="color: rgba(0, 0, 255, 1)">return</span> Content(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">-1</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 128, 128, 1)">24</span> <span style="color: rgba(0, 0, 0, 1)"> }
</span><span style="color: rgba(0, 128, 128, 1)">25</span> }</pre>
</div>
<p> </p>
<p>利用这个接口,就可以自己写出一个域名检测的API啦!</p>
<p><img src="https://img2018.cnblogs.com/blog/1631302/201905/1631302-20190514170642018-1587156384.png" alt=""></p>
<p> </p>
<p><span id="section5" style="font-family: 幼圆; font-size: 18pt">五、防封方案</span></p>
<p><span style="font-family: 幼圆">1、微信里的入口域名最好用备案域名。并且要加白名单</span><br><span style="font-family: 幼圆">2、不要QQ和微信同时用一个链接去推广</span><br><span style="font-family: 幼圆">3、网站内容 关键字、描述 图片等,不能出现敏感词</span><br><span style="font-family: 幼圆">4、屏蔽举报按钮(此方法失效,尝试过,但是对于现在的微信而言没用.. 还是可以举报)</span><br><span style="font-family: 幼圆">5、结合微信超级跳转技术,利用大站的跳转漏洞,使用CDN,删除跳转来源等等.. 尽可能提高Url在微信里的存活时间,微信跳转方法和原理详情请看另一篇随笔《微信域名检测、防封,微信跳转技术揭秘(二) -- 微信跳转揭秘》</span></p>
<p> </p>
<p><span id="section6" style="font-size: 18pt">六、参考资料</span></p>
<p> </p>
<p>1.http://www.penhot.com/read-study/1732.html<br>2.https://www.jianshu.com/p/50cefada7cbb<br>3.https://blog.csdn.net/weixin_44358823/article/details/86551792<br>4.https://www.orzlee.com/index.php/web-development/2019/01/28/wechat-domain-name-is-blocked-and-automatically-replaced-domain-name.html<br>5.https://short.huanghanlian.com/p/5cac62d26748ea3010382f4f<br>6.https://www.cnblogs.com/stumpx/p/10154484.html</p>
<p> </p><br><br>
来源:https://www.cnblogs.com/myron1024/p/10863280.html
頁:
[1]