搜索
查看: 2997|回复: 0
打印 上一主题 下一主题

那些隐藏在微信推广背后技术

[复制链接]

581

主题

581

帖子

1371

菲华币

菲华精英

Rank: 4

积分
581
跳转到指定楼层
楼主
发表于 2020-12-24 11:23:53 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

2020年12月22日

转载应注明作者和网站出处,添加原文链接;
没有获得明确的许可,不得改写内容。如有编辑、改写或是缩短内容,请在文中注明:“本文在原文基础上进行了改编,原文首发于凤凰联盟。”

一.引语简介
快时代网络发展下的今天,微信早已成为腾讯集团在即腾讯QQ后又一占领聊天平台与社交平台高低的软件,截止到2016年第二季度,微信已经覆盖中国94%以上的智能手机,月活跃用户达到8.06亿, 用户覆盖200多个国家、超过20种语言。 此外,各品牌的微信公众账号总数已经超过800万个,移动应用对接数量超过85000个,广告收入增至36.79亿人民币 ,微信支付用户则达到了4亿左右。① 在大数据下以手机支付为主的支付市场里,微信以其简单化的页面与便捷性的操作赢得了一批又一批的新用户加入微信支付行列,也引得了一大批商家瞄准商机,纷纷将战场转移向微信。

而商家在微信平台上进行推广的途径其中最为主要的便是制造外部链接吸引用户进行点击浏览,从而实现扩大自身的传播的广泛性。事与愿违的是,大部分链接并不能成功的被用户所点入,相反出现“已停止访问该网页”的红色图标,也就出现我们经常见到的以下界面--


这种便是我们所说的微信防红的“红”,也就是微信内域名被拦截了。

在微信内域名被拦截的有很多种,除了一些确实存在违法、违规的页面。一些正常的页面也会因为被误监测或是恶意投诉而导致微信封禁、停止访问。虽然在微信严格打击外部链接之后微信的生态环境确实净化了不少,但同时也存在着误封或者恶意投诉导致很多正常网页被封禁。

这些链接的背后网站有的是基于微信的社交论坛、有的是合法的产品页面展示,当这些页面被误伤后,如果不能及时恢复的话,对于公司的损失无疑是惨重的,尤其是一些运行不够完善的小公司。而在这种情况下,自然而然便催生了一系列“新行业”--微信防红。

二.微信防封技术及其实现原理
从专业的角度来看,对于微信的所采取措施进行百分之百的防封是不可能存在的,如果是通过第三方的手段技术来采取应对措施,第三方所做出来的微信域名防封也只能做到在一定程度上尽量的延长域名的生存周期,以及通过特殊的技术手段能使得潜在用户在域名被封后能够依旧正常访问。而此时在用户的角度上是无法发现所打开的域名是否被查封,从而不影响公司的正常业务往来,也就减少了域名被封对公司所造成的损失。
这些微信域名防封常用技术一般来说有以下十种,我们按照程序的难易程度进行下列的排序(由简单至复杂)

1.自带浏览器打开
    这种操作最为简单,只要提示用户使用自带浏览器打开就可以了。

此类用自带浏览器打开网页的模式多用于APP的推广以及不能直接在微信打开的页面。原理较为简单,时下手机端主要分为安卓客户端与iOS客户端,这种操作在两种不同的客户端实现内容不一样。在安卓的客户端上可以直接识别目标用户的客户端,如果代码判断出用户是在微信内部打开的链接,便可以直接打开系统自带的浏览器来打开链接,而如果是用手机浏览器打开的的链接,则可以正常访问;另一种在iOS客户端上的时候,需要判断用户是否在微信中打开,如果是在微信中打开,则需要图片遮挡来提示可以在浏览器中下载。

判断当前页面是否在微信中打开代码(部分):

var is_weixin = (function(){return navigator.userAgent.toLowerCase().indexOf('micromessenger') !== -1})();
    if(is_weixin){
    $(function(){

而如何在安卓客户端上微信中直接调用自带浏览器,做此类技术并提供服务的服务商很多,并且要价极高。但原理极为简单,其实就是判断是否能在微信内打开,如果可以在微信内打开就返回上一个文件,微信内部浏览器对于不支持的格式则会调用手机里第三方应用,如果手机里只有一个浏览器时就会默认打开,否则就会直接返回链接进行下载。

2.DNS 防封
DNS 防封技术简单来说就是屏蔽掉一些 ip,让一部分人或机器无法访问你的页面。比如:随意恶意投诉的人、审查监测人员、自动检测的机器等。但是较为麻烦的一点是,这些需要屏蔽掉的ip 黑名单需要自己搜集,搜集之后直接在 nginx进行配置。

location / {    allow 111.111.1.11;    deny all; }

3.入口网址 “阅后即焚” 防跟踪
此类技术简单来理解技术为了防止用户找到你的入口域名

(如下代码展示)

history.pushState(null, null, document.URL); //禁止网页返回上一页
      window.addEventListener('popstate', function() {
        history.pushState(null, null, document.URL);
      });

另外一种方式就是禁止微信以外部的网站访问,我们通过判断用户是否使用外部浏览器来打开网页,如果用户是使用外部浏览器打开就禁止其的访问,或者直接使用户打开的网页跳转至一个无关页面。

4.防攻击、劫持
防攻击、劫持出现的原因为有时即便网页没有违规内容,也会因为网页被攻击劫持而导致被误封的情况出现。

这类技术最简单的方式就是将 http 换成 https,让 Nginx 开启 HSTS 让浏览器强制跳转 HTTPS 进行访问,必要时还可以使用一些高防 CDN来 过滤掉一些不相干的东西,如此使得网页更安全。

5.被封域名恢复
  被封域名恢复一般有两种方式:iframe 和代理访问。

第一种iframe 技术就是实现被封网页恢复就是把被封网页嵌套到其他的网页上。

另外一种代理访问恢复被封网站的原理就是在浏览器和 Web 服务器之间增加了一台代理服务器。在当用户通过代理服务器访问的时候,浏览器并不是直接到 Web 的服务器去取回网页,而是向代理服务器发出请求,由代理服务器来取回浏览器所需要的信息,并发送给用户的浏览器。 从而实现被封网页的恢复。但是通过代理访问恢复成本相对于其他几种技术方式来说成本高,且同时需要租一台额外的服务器,所以使用这种技术的很少,大部分是一些黑色产业,同时还有一些极特殊情况需要紧急恢复的人。

6.制造活码保证域名畅通
制造活码来保证域名畅通也就是入口不死域名,大致的意思为能保证第三方所推送给用户的域名能处于一种一直能被打开的状态,避免微信对所要推送给用户的链接、二维码进行封禁,导致用户无法打开页面的情况出现,进而能提高商家的推广效率来节约成本。

入口不死域的工作原理为第三方将所要推广的内容放置在落地域名上,而推送给用户的链接或者二维码则使用入口域名,同时在此基础上,入口域名使用短网址来使原有的网址隐藏。接下来通过使用入口域名跳转至落地域名,以保证入口域名没有违规的内容;或者是由于入口域名在跳转落地域名的这个过程中用时很短,同时使用短域名隐藏了原有的网址,使得用户没有办法随意举报入口域名,也就无法将推送的域名封禁,从而来保证入口域名一直能处于不被封禁的状态。

如果用一个简单的例子来表示,就是我们现在有 A 域名、B 域名和 C 域名三个域名。第一步我们将商家所要推广的内容放在 B 域名上,但是推送给用户的那个域名,或域名生成的二维码却是 A 域名。在这一步的基础上,用户打开页面的同时需要打开 A 域名,然后再通过 A 域名里类似上面的代码来跳转至 B 域名,这样即使用户所要打开的 B 域名被封禁,但是由于 A 域名的本身没有违规内容,再加上短网址的存在隐藏掉了原有域名,用户也无法随意恶意举报,从而保证 A 域名一直能处于不被封禁的状态。

第二步是要结合第一步共同进行的,在第一步的基础上同时再配合自动检测、轮换。比如:所制造的代码需要实时检测 B 域名(落地域名)的状态,如果微信监测出问题, B 域名被封禁,则自动将 A 域名(入口域名)由指向 B 域名的状态瞬速改为指向 C 域名,这样就能保证用户一直可以正常打开所推广出去的页面或要扫描的二维码。同时还可以配合防检测、防投诉、防跟踪等技术来屏蔽掉各个环节的人工和机器检测以及来自用户的恶意举报。

另外一种方法就是:将A域名作为入口,将B域名作为落地域名,通过技术手段限制 B 域名显示的内容,用户必须是从A域名的入口来的才能显示目标内容,如果用户直接打开 B域名的网址,显示正常的内容或无内容,用户投诉 B 域名,而后台审核人员打开 B 域名发现显示的内容完全正常,这时用户举报也是无效的,B域名依旧能正常打开。

(通过 js 简单实现活码的功能)


转载应注明作者和网站出处,添加原文链接;
没有获得明确的许可,不得改写内容。如有编辑、改写或是缩短内容,请在文中注明:“本文在原文基础上进行了改编,原文首发于凤凰联盟。”

与此同时我们也可以了解到,很多拥有入口不死域名技术的供应商声称自己的效果优良,过程并不复杂,几段代码便可以匆匆完事。

7.被封域名实时检测、自动轮换
  使用被封域名检测可以使我们第一时间发现域名被封禁,然后以最快的时间更换域名。目前被封域名检测的方式有很多种,而现在最简单的方式便是通过请求(如下)--

http://mp.weixinbridge.com/mp/wapredirect?url=%s&action=appmsg_redirect&uin=&biz=MzUxMTMxODc2MQ==&mid=100000007&idx=1&type=1&scene=0

在操作后微信会进行重定向,只要拿到重定向的地址就能判断,重定向到自己的域名便是是正常,重定向到 weixin110 的地址便是被封。

Java 的实现代码(部分):

import okhttp3.OkHttpClient;

import okhttp3.Request;

import okhttp3.Response;

import java.io.IOException;

而自动轮换域名顾名思义就可以直接根据域名状态进行判断,如果域名出现被封的情况就将指向地址更换一下便完成了防封。

8.短域名多级跳转
设置多级跳转的意义在于分担风险,以此来增加微信检测的难度与追踪的难度。与此同时设置多级跳转中的任何一级域名在被封禁后都是可以通过“自动检测 + 自动轮换”的代码技术去自动更换被封域名,这时在用户的角度上来看是无法感受到所打开的域名是否被查封的。

另外一方面,使用短域名的意义在于短域名相对于长域名来说格式更加简洁、美观,使人有一定打开的欲望。同时短域名生成的二维码也更加简洁。短域名自身可以生成也可以使用来自第三方的服务。市面上据说一些大厂所提供的短域名 API 生成的短链接的存活时间要比原有链接更长,不过实际运用上相差无几,可以忽略不计。

(生成代码举例)--


如果商家要使用自己的短域名服务也不复杂,网上也已经存在各种语言的短链接生成代码可以提供参考,短网址生成的大概原理如下:

第一步当客户端提交长网址时,例如提交的是:http://aaa.com/bbb/ccc.html?abc.

  • 服务端就可以根据我们自己生成的一个无规律性的短网址码表,来查询所生成的域名存在与否。如果不存在便自动生成短网址http://aaa.com/qsfres,同时将qsfres和长网址http://abc.com/ddd/xxx/a.html?dsada的映射先保存下来,然后再将所自动生成的短网址http://aaa.com/qsfres返回给用户。
  • 之后用户浏览器中便会请求http://abc.com/sdjffd,会先解析//abc.com的IP 地址。检查完毕后客户端再用 qsfres 发起 GET 的请求。
  • 下一步为服务器收到客户端发来的GET 请求,根据 qsfres 所对应的 id 查找码表中对应的长网址然后并返回 sdjffd 映射的长网址。
  • 最后在客户端收到返回的长网址后,使用 301 重定向到长网址上。
        
9.落地域名限制区域访问
落地域名限制区域访问技术限制域名访问区域,通过此类技术可以防止恶意投诉的人或者审核人员的监测,只允许一个地区的IP访问而屏蔽掉另外一个地方的IP,使得其无法访问。

10.防止恶意投诉
防止恶意投诉要做主要就是通过技术手段屏蔽官方的投诉按钮,或者用户无法点击投诉按钮。

相对于其他技术来说此类技术较为复杂,所要进行的程序较多,并且微信经常更新补丁。而此类技术另一个需要做的就是制做一个假的投诉悬浮窗,并在之后做一个假的投诉界面,这样就可以过滤掉一些新用户的投诉。



转载应注明作者和网站出处,添加原文链接;
没有获得明确的许可,不得改写内容。如有编辑、改写或是缩短内容,请在文中注明:“本文在原文基础上进行了改编,原文首发于凤凰联盟。”



菲律宾华人电报群
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表