视频教程
youtube播放地址:https://youtu.be/_EoccSHSiAU
简易代理检测:https://proxy.888005.xyz
详细代理检测:https://proxy.incolumitas.com/proxy_detect.html
家宽住宅VPS推荐: https://v.m123.org
自用专线机场推荐: https://b.m123.org
GIA高速VPS推荐: https://d.m123.org
视频文稿(忽略)
相信大家或多或少都遇到过某些网站提示你正在使用代理,无法使用某些服务的情况,除了通过最基础的ip判断,还有哪些手段可以检测到我们正在使用代理?本期就来给大家盘点以下四种检测代理的类型,分别是代理ip自身问题、网络行为异常问题、代理配置不当问题、系统环境不符问题
视频开头我们通过这个网页简单的进行了代理检测,估计大部分使用代理的朋友都被检测出来了,因为这个网页调整到了最严格的检测状态,稍微有点代理特征就把你标记为代理用户,为了更直观的展示,我们可以访问这个网页获取更详细的代理检测手段,当前我的代理环境多项检测都被标红,说明检测出了代理特征,绿色部分表示未检测出代理特征,可以说我的代理环境非常糟糕,如果这种状态去运营tiktok或者登陆网银之类风控等级很高的网站,大概率会死的很难看,接下来就来带大家一步步搞定各项检测让他变成一片绿
事先声明,任何网站都不可能公布自家检测代理的方法,我这里仅仅是为了让大家了解各种理论可行的检测方式,事实上很少有网站会做这么严格的限定,可能你要访问的网站只会检测其中的一两项,甚至可能只需更换ip就行了,所以不一定非要全绿才能正常使用,而且实际上你也很难做到全绿,有些检测手段很难绕过且不同手段存在关联,容易按下葫芦起了瓢,再者由于大家使用的代理工具、代理配置以及操作系统都不一样,导致检测结果和解决方法也不一样,我不可能每种情况都给大家做演示,只能简单讲一下绕过检测的方法,具体在你的环境下该如何解决需要你自行研究,希望大家能够理解
另外如果你是小白用户,感觉很麻烦难以搞定,可以看视频最后给大家介绍的即简单又究极的解决方法
首先第一类是代理ip本身的问题,也就是你用的代理ip本身就被该网站屏蔽了,这是最常用的检测手段,我们通过代理访问该网站的时候,首先是你家宽带运营商分配给你的住宅ip3.3.3.3连接了代理ip6.6.6.6,由代理ip帮我们访问这个网站,所以这个网站看到的ip是这个节点的ip6.6.6.6,这个blocklist检测项显示红色,就表示当前我使用的代理ip存在于这个网站的黑名单中,如果你是使用机场节点,或者使用价格便宜,更换ip门槛很低的vps自建节点,以及被很多人当住宅ip用的伪住宅ip,很有可能在黑名单列表,因为这种ip是很多人一起用的,你不知道别人用这个ip干过什么事,比如搭建公共代理,批量注册,发送垃圾邮件,钓鱼诈骗等滥用行为,然后这个ip就会被各大ip数据库公司收集到黑名单列表里,而这个检测网站调用了ip数据库,通过比对发现你的ip在黑名单列表里,于是就判断你正在通过代理访问,点击这里可以看到更详细的信息,这里的isproxy为true,就表示这项检测查出了你正在使用代理访问网站,依据就是你的ip在黑名单里,可以细分为以下几项,isvpn为false表明这个ip不是vpn的出口ip,主要是检查市面上比较大型的vpn商家,比如ExpressVPN、NordVPN、Surfshark等,第二项为true就表示这是代理,第三项tor为false就表示这不是tor节点,至于什么是tor节点我在暗网那期视频讲过,最后就是这给ip是不是被人滥用了,比如发送垃圾邮件钓鱼诈骗等行为,显示true就说明近期有过这种行为,总之就是这个ip不干净,如果你只是用这种ip访问谷歌或者youtube之类的对风控不是很严格的网站可能没什么影响,顶多让你输入验证码,不会阻止你正常使用,而如果是tiktok、facebook、paypal之类对风控要求较高的网站可能会导致你的账号出问题。另外很多网站都提供了ip黑名单查询,比如我们常用的ipinfo,也可以看到ip是否是代理,各家公司的数据库都不一样,检测结果也不同,存在误报的情况,但如果多个平台检测都显示ip不干净那大概率就是不干净。这种情况唯一的解决办法就是换一个没被拉黑的ip,不在黑名单里自然就解决了这个检测,不过也只能代表你用的ip不脏,众所周知我们的代理ip都是在购买vps的时候由商家分配的,如果这个商家的主要业务就是卖vps的,那么在datacenter测试这一栏将会标红,说明负责分配这个ip的商家主要从事数据中心托管业务,也就是公司类型为hosting,点击这里查看更多信息,此项被标记为代理,原因就是因为我们用的这个代理ip是数据中心托管的ip,判定依据就是ip对应的公司主营是hosting托管业务,虽然下面的asn显示isp,但还是被标记为代理,
hosting的ip最显著的特点就是容易获取,我们在vps商家购买的大部分都是这种类型,要绕过这项检测的话就需要找类型不是hosting的商家购买vps,比如类型为business或者isp的商家,不过很少有网站会做这么严格的限制,限制范围太广了会影响自家正常业务
这两项检测是ip本身的问题,只能通过换ip或者vps商家解决
第二类是网络行为异常的检测,顾名思义就是和在没有代理的情况下网络行为不太一样,比如这项延迟测试被标红,详情可以看到被检测出了代理,
主要检测tcp连接和websocket连接的延迟,这个网站的服务器位于美国,在没有使用代理的情况下,我访问网站是直接从中国连接美国的服务器,首先建立tcp连接,假设延迟为150ms,然后建立ws连接,同样假设延迟为150ms
而如果使用美国节点访问这个网站,我首先需要连接到美国的节点,假设tcp延迟是150ms,这个美国节点会帮我们访问网站,所以会和这个网站建立tcp连接,由于地理位置很接近,假设延迟为5ms,接着我这台电脑会发起ws连接,数据来到美国节点耗时150ms,再由美国节点转发给网站耗时5ms,所以建立ws连接总共耗时155ms,而建立tcp连接只记录美国节点到网站的耗时,也就是5ms,网站只能看到是节点服务器在和他进行通信,正常情况下tcp和ws的连接延迟不可能相差这么多,当差值过大就会被标记为代理,这就是该延迟检测的原理
这里就是进行多次tcp连接和ws连接后的延迟,tcp的延迟在70ms徘徊,最小值为70,这是美国节点到美国网站的延迟,下面是websocket延迟,最低延迟是250ms,这个延迟是我这台电脑经过美国节点到这个网站的延迟,由于相差过大,于是被判定为使用了代理
要绕过这项检测,我们需要尽量缩小差值,也就是将节点和网站之间建立tcp连接的延迟拉长,并且缩短我们到节点的延迟,最简单的做法就是改变节点和网站之间的物理距离,比如我现在使用香港的节点,不需要任何处理就能直接就绕过了这项检测, 香港节点到美国网站的tcp延迟是211,我的电脑到香港节点的延迟大概20ms,所以从我的电脑经过香港节点到美国网站的ws延迟为233ms,由于二者的差值较小所以并没有检测出代理
有些朋友会讲,那我一定要用美国节点咋办呢?那确实不好办,所以开头也说了,有些检测很难绕过。
接下来的网络解析也属于网络行为异常,当前判定为代理,主要有两项检测,第一个是通过dns解析行为来判断,第二个是通过能否从非标端口加载脚本来判断,当前是因为dns解析异常导致被判定为代理
该网站会随机访问一个不存在的域名,众所周知访问网站之前会先进行dns解析获取域名对应的ip地址,当dns解析一个不存在的域名时,正常情况下会立即返回空的解析,访问的报错信息是dns解析错误,而不正常的情况就像现在这样,等待3秒后访问的报错信息是超时,说明这个不存在的域名却分配到了ip,并且访问这个ip超时了,通过这个异常行为来判定存在代理,我个人认为有点牵强。
正常情况下大家应该都是绿色的正常检测结果,因为即使是fakeip也能正常处理空解析不会超时,我这里只是为了给大家演示效果故意让他变红的,但有个例外是小火箭的配置模式会导致访问超时,而代理模式就可以正常访问,两种模式的最终结果都是走代理,按理来说不应该出现不同的测试结果,具体原因不明,小火箭用户可以试试
第三类是代理配置不当泄漏本机或者上游ip导致被判定为代理,正常情况下,这个网站应该只能知道我们正在使用的代理ip地址,但由于不当的代理配置,导致本机的ip也被网站知道了,当发现你访问网站用的ip和本机暴露的ip不一致的时候,就判断你在使用代理,最常见的就是webrtc泄漏本机ip,关于webrtc泄漏我在udp那期教程详细介绍过,感兴趣的朋友可以回看,简单来讲,webrtc是通过udp传输的,如果你使用的代理配置只将tcp数据交给节点处理,而udp数据通过直连发给对应的服务器,毫无疑问udp通信将会暴露我们的真实ip地址,通过webrtc检测到了我们的ip是16结尾,也就是用来进行udp通信的ip是16,而我们访问网站实际用到的ip是12结尾,也就是用来进行tcp通信的ip是12,正常情况下tcp通信和udp通信用的ip是一样的,当发现二者ip不匹配时,就会被标记被代理
如果你是使用系统代理模式或者在浏览器安装代理插件的模式都无法将udp流量交给节点,网站会获取到你的真实ip,并将你标记为代理用户,这种情况你可以通过安装浏览器插件来屏蔽webrtc通信,而如果你是使用软路由或者tun模式接管系统全局流量,正常情况下udp流量就会交给节点处理,除非你手动关闭了udp代理,这样情况不需要额外操作,tcp通信和udp通信都是使用同一个节点ip,就能直接绕过webrtc检测了,当然你的机场节点可能存在多个落地ip导致被检测出了代理,以没有泄漏你本机ip为准
除了直接泄漏本机ip,也可能通过其他方面的泄漏来判断存在代理,比如颇具争议的dns泄漏检测,关于这个话题我是做的最多的而且也讲的非常清楚了,详细内容可以回看这期视频,此处我们不讨论如何防止敏感网址泄漏给不可信的dns提供商,只简单介绍dns泄漏检测的工作原理
我们在访问检测网站之前,会先发起dns请求获取网站的ip地址,当我们确定网站需要使用代理的时候,就应该将获取该网站ip的dns交给节点处理,由节点帮我们处理dns请求,代理检测网站可以知道是哪个dns服务商对数据进行了处理,当发现是同样在美国的dns提供商处理的,就表示没泄漏
但代理配置不当的话,就会将dns请求交给了国内的dns提供商处理,代理检测网站发现你是美国的用户,但是为什么会用中国的dns服务?显然是不合理的,于是将你标记为代理,要解决这个问题的话确实比较麻烦,需要具体情况具体分析,并不是像有些人说的开全局就不会泄漏了,可以在我频道搜索dns泄漏相关视频,由于篇幅原因本期不做介绍
另外从该网站的前端源码也能看到dns泄漏的检测项,但是目前没有实施,可能是还没有完成或者关闭了,因为换成任播dns提供商就不好判定代理了
最后第四类就是系统本身环境暴露了代理特征,比如tcp/ip指纹,众所周知是节点负责帮我们访问网站,也就是节点通过三次握手和网站建立tcp连接,网站收到节点的握手数据包,由于各操作系统建立连接的默认参数不同,所以检测网站可以通过tcp数据包的序列号、flag标志位和滑动窗口大小等信息来判断和自己建立连接的是什么操作系统,最简单的比如我们同时ping windows系统和linux系统,两个系统的ttl默认值是不同的,可以看到目前被判定为了代理,这里是可能是某个系统的概率,数值越大则表示概率越高,其中chromium os的数值最大,说明节点服务器是chromium系统的概率最高,而我当前是使用mac系统访问这个检测网站,当二者不一样的时候,就会被标记为代理,下面这些就是tcp建立连接时的参数,通过这些参数计算出是chromium系统的概率最高
要绕过这种检测方式,我们可以通过插件修改浏览器的useragent,改成对应的目标系统即可,因为该网站获取你用的是什么操作系统就是通过http请求中附带的useragent,但这治标不治本,如果是在app里进行检测的话我们就没辙了,当然你也可以在和你本地对应的系统上自建节点,比如将节点搭建在windows系统上,本地也用windows系统连接,或者将节点搭建在linux系统上,本地使用linux系统连接,但本地是ios的话就没办法了,毕竟没有ios的vps购买
另外还有时区问题,目前被检测出来代理,原因是本机的时区是上海,而节点是香港的ip,用香港的ip上网,时区应该也是香港的,虽然他们都是utc+8,但不是同一时区,所以还是被标为代理,解决这个问题比较简单,可以使用浏览器插件或者直接将系统时区改成和节点ip地理位置一样,就可以绕过这项检测了,除此之外还有专门针对浏览器指纹的检测,在之前的这期视频中详细介绍过,感兴趣的朋友可以回看
至此所有的代理检测就都绕过了,而一开始就是绿色的这三项,最后一项是http协议头中的代理信息,我们用的代理是不可能会有的。至于这两项检测意义不明,前端也看不出是怎么检测的,我也从来没有被标红过就不讲了
我想补充的是,虽然页面已经全绿了,但一定会有无法绕过的代理特征,不可能完全隐藏掉,只不过这个网页没有检测罢了,如果你真的不想暴露任何代理特征,可以使用之前介绍过的windows远程桌面,给vps安装windows桌面系统,通过远程桌面的方式连接vps,这样我们是远程操控这台windows电脑,相当于桌面镜像,并没有使用代理,自然也就检测不出任何代理特征了