微信分享链接被封?利用Python检测!并恢复正常!

当然了,最感兴趣的我想是专业做微信裂变导流的开发者了,这篇文章可能会对很多做付费检测的站长造成冲击,因为你只要在搜索引擎里面搜索微信防封,绝大部分的文章都是软文,没有任何一篇是讲解域名检测原理的,都是在推广自己的付费检测服务,而且价格不低,动不动一个月几千...

扫描二维码关注公众号,回复: 5551102 查看本文章

这篇文章并不是为了给恶意诱导分享的开发者提供解决方案,目的只是为了给像博主这种底层码农开发者提供思路,在遇到同样问题的时候能够及时有效的应对,毕竟微信封了域名可能直接影响线上的业务。

欢迎大家加入小编创建的Python行业交流群,有大牛答疑,有资源共享,有企业招人!是一个非常不错的交流基地!群号:683380553

好了,思路有了,具体实现是个大问题,首先我们需要一个模拟器,还得自动化操作,模拟访问打开链接需要时间,这样检测一次得好几秒,emmmm...那些号称千万级毫秒访问的大佬肯定觉得这方法行不通。

说实话,博主我也觉得这种方法有些智障,但是早期确实有一些人提供的付费服务是这么做的,使用手机墙和群控实现也不难,而且这种方法也是最有效的。

你以为这篇文章就这样讲完了吗?

错!

要真是这么做,我等码农不也还是无法解决问题么,我们的出发点是解决苦逼开发者的痛点,所以下面讲的才是关键。

原理

上面说到域名都要先经过微信服务器检测一下,所以我们想办法让微信自己的域名过微信的检测,利用经典的重定向方法。在很早的时候QQ也会给域名报红,那个时候很多大佬千方百计的找各大厂的跳转漏洞来躲过腾讯的检测,也就是说腾讯检测到域名是正常的就会放行,也就不会提示危险链接了。

这里恰好也是利用这种思路,当然也是有些不同的。

QQ时代,大家担心的是自己在聊天窗口发出去的链接会被QQ标记为“危险网站”,这样大家一看就不会打开了,所以只要让QQ标记为可信网站即可。

但是在微信时代,聊天窗口并不会提示微信网址,而是在打开的过程中必须先过微信服务器检测,也就是说有没有被封,只有打开之后才会知道,虽然提示方式有所改变,但是利用思路还是一样,重定向。

我们打开微信公众号开发文档 https://mp.weixin.qq.com/wiki 里面的 “账号管理”-> "长链接转短链接接口"。

说到这我相信很多朋友已经豁然开朗,“啊?原来是这样!!!”“这也太简单了吧”“我终于明白了!!”

对,没错,就是利用这个,将需要检测的域名转换成短链接,使用程序去请求这个短连接,如果被封,域名会被重定向到weixin110.qq.com,我们只需要检测重定向之后的域名是不是weixin110.qq.com就OK了。

好了,域名检测就这么简单,下面来说说额外的一些技巧吧。

实现

我们观察微信的文档,这个转换功能需要三个参数

access_token 调用接口凭证
action 此处填long2short,代表长链接转短链接
long_url 需要转换的长链接,支持http://、https://、weixin://wxpay 格式的url

第一个参数是关键 access_token是从微信那里获取到的,获取access_token需要在公众号后台添加服务器的IP白名单,之后根据微信的文档拿到access_token就可以用了。

注意:这个接口只有认证过的服务号才拥有权限,每天的请求次数是10000次 ,详细权限列表在这里 https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1433401084。

那么有同学就要问了,我没有公众号怎么办,或者说我公众号一天10000次根本不够怎么办呢?再或者,我换公众号了不想添加服务器白名单怎么办?我换服务器了,改IP白名单很烦躁怎么办???

好了好了,博主我现在提供给你更方便更快捷的方法。

我们知道微信为了给开发者提供方便,推出了微信测试号,目的是开发的时候使用,测试号拥有服务号的绝大部分功能,但是基本上所有的功能只能开发者本人使用,链接发出去给别人别人也无法访问不了。

但是!!!重点来了,那个长链接转短接的就不一样了,可以随便用,我们就是利用了这个,而且有个好处就是微信测试号不需要绑定IP白名单也能获取到access_token,任何微信号,有没有实名认证都无所谓,全部都能申请测试号,所以,你懂的。

测试号唯一的缺点就是,转换短链的接口每天只有1000次的请求次数,所以,你可能需要准备很多个微信测试号,相对来说,微信测试号的成本比认证服务号的成本低的可不是一点点。

so...你懂的...

测试号申请地址 https://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login

好的,原理就是这么简单,下面给出一个简单的Python代码,同学们可以根据自己的需要开发更加智能的系统实现自动化检测和切换域名功能,真的很简单的,博主自己也开发了一整套系统,公司用就不开源了,截几个图吧

# 检查域名是否被封
def check_domain_killed(domain):
    try:
        check_url = "http://%s" % domain
        short_url = create_wechat_short_url(check_url)
        if short_url:
            return_url = requests.get(url=short_url, timeout=30).url
            if "weixin110.qq.com" in return_url:
                push_msg("封号提醒", '域名' + domain + '被封')
        else:
            return False
    except Exception as e:
        return False
# 创建微信短域名
def create_wechat_short_url(domain):
    try:
        access_token_string = "" # 这里根据文档从微信获取access_token
        to_short_params = {
            "access_token": access_token_string,
            "action": "long2short",
            "long_url": domain
        }
        short_url = "https://api.weixin.qq.com/cgi-bin/shorturl?access_token=%s" % access_token_string
        weixin_response = requests.post(url=short_url, data=json.dumps(to_short_params)).json()
        short_url = weixin_response.get("short_url")
        return short_url
    except Exception as e:
        return False

关键代码就这么点,需要的同学自己修改就行了。

总结

不知道微信后期会不会修改这个接口...

猜你喜欢

转载自blog.csdn.net/qq_42156420/article/details/88552333