问题描述
本人使用Digital Ocean的VPS,位于SFO的机房,上面部署Shadowsocks作为梯子。有时候用Google会被ban掉,因为机房的同一地址段中可能有人跑一些非法的程序,向Google发送大量垃圾请求。此时用普通搜索服务或者学术搜索服务的话就会跳转到下面这样的警告:
We're sorry...
... but your computer or network may be sending automated queries. To protect our users, we can't process your request right now.
See Google Help for more information.
普通搜索还好,发生的概率不高,但是学术搜索经常被ban,尤其讨厌。
解决方案
首先在VPS上启用ipv6,参照官方文档;如今SFO机房里的VPS应该都可以启用的。然后vi /etc/hosts编辑hosts文件,添加你所在的地址段被Google给ban掉的各项服务的ipv6地址,一个简单的示例如下:
2607:f8b0:4005:801::200e google.com
2607:f8b0:4005:801::200e www.google.com
2607:f8b0:4007:805::100f scholar.google.cn
2607:f8b0:4007:805::100f scholar.google.com
2607:f8b0:4007:805::100f scholar.google.com.hk
2607:f8b0:4007:805::100f scholar.l.google.com
此时重启Shadowsocks服务(如果你使用supervisord来作为守护进程的话,直接kill掉Shadowsocks的服务,就可以自动重启),然后就可以轻松愉快地正常使用G家的搜索啦!
其他
一个小问题是,Google可能会经常变动自家域名的ipv6地址,此时我们不得不手动寻找新地址来写入host文件。一种方法是使用nslookup命令,如下所示:
[root@host ~]# nslookup -query=AAAA
www.google.com
Server: 8.8.8.8
Address: 8.8.8.8#53Non-authoritative answer:
www.google.com has AAAA address2607:f8b0:4005:801::2004Authoritative answers can be found from:
更简单的方法是使用host命令:
host -t AAAA www.google.com
或者dig命令:
dig www.google.com AAAA
总而言之,就是查询特定类型的地址。