解决谷歌搜索频繁人机验证问题

前几天入手的小鸡IP段在谷歌黑名单里,谷歌搜索的时候频繁出现“reCAPTCHA”人机验证,太烦了。找客服换ip还要花银子,而且重新给的IP有可能还是会这样。昨天抽空解决了一下,效果很满意,今天写下关键步骤,分享、备忘。以下步骤建立在ubuntu20.04上,其他系统自行变通。

准备 IPv6

服务器编辑/etc/sysctl.conf,确保以下三个配置都为0,启用ipv6。

1
2
3
net.ipv6.conf.all.disable_ipv6 = 0
net.ipv6.conf.default.disable_ipv6 = 0
net.ipv6.conf.lo.disable_ipv6 = 0

然后执行sysctl -p使配置生效。
接下来确认一下VPS商家有没有提供ipv6,如果有就去申请一个ipv6地址。如果没有,就自己注册tunnelbroker,申请一个IPv6隧道,具体步骤谷歌一下吧,很简单。
执行ping6 www.google.com,正常情况下能ping通,说明设置正确,记录下返回的地址。

配置hosts

将上一步得到的google的地址填入/etc/hosts文件中,也可以自己搜索一些谷歌其他的ipv6地址填入。

1
2404:6800:8005::68  www.google.com

访问https://www.google.com/sorry/index,如果显示的是ipv6的地址,那么人机验证的问题基本已经解决了。试着搜索几次,确实不会再弹人机验证页面。
但是,后遗症来了,访问其他网站变慢了,为什么?因为我用的是tunnelbroker的隧道,开启ipv6以后,默认流量全部都走ipv6隧道中转一下,速度当然上不去,接下来再解决这个问题。(原生ipv6地址的应该不会有此问题,也就没必要看下一步了。)

IPv4优先

很简单,只需要修改/etc/gai.conf,将里面的

1
precedence  ::ffff:0:0/96  100

这一行取消注释即可,具体原理见参考链接。
验证一下,执行wget -SO /dev/null weixin.qq.com

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# wget -SO /dev/null weixin.qq.com
URL transformed to HTTPS due to an HSTS policy
--2020-11-12 20:59:25-- https://weixin.qq.com/
Resolving weixin.qq.com (weixin.qq.com)... 203.205.254.110, 203.205.235.205, 240e:e1:a900:50::3a, ...
Connecting to weixin.qq.com (weixin.qq.com)|203.205.254.110|:443... connected.
HTTP request sent, awaiting response...
HTTP/1.1 200 OK
Content-Type: text/html; charset=utf-8
Cache-Control: no-cache, must-revalidate
Connection: keep-alive
Strict-Transport-Security: max-age=31536000
Content-Length: 10336
Length: 10336 (10K) [text/html]
Saving to: ‘/dev/null’

/dev/null 0% 0 --.-KB/s /dev/null 100% 10.09K --.-KB/s in 0s

2020-11-12 20:59:25 (246 MB/s) - ‘/dev/null’ saved [10336/10336]

可以看到weixin.qq.com解析出了ipv4和ipv6地址,连接的是ipv4地址,用同样的方法也可以看出google.com连接的是ipv6地址。大功告成。

总结

出现人机验证的原因是ip地址被加入黑名单了,我们最终措施是更换ip。更换ipv4地址或启用ipv6地址都可以解决此问题,只不过前者可能需要花银子,后者可能需要花时间😂。

参考链接

https://blog.51cto.com/welcomeweb/2464836