通過VPS使用VPN或ShadowSocks訪問Google或Google Schoolar出現驗證碼等的解決方法

似乎出現這種問題的很大一部分是因爲用的DigitalOcean的VPS...

這裏只針對IPv4和IPv6雙棧VPS給出可能的解決方法

問題描述

我用的是架設在DigitalOcean上的Shadowsocks,有時訪問Google會被要求輸入驗證碼:

google.png

或者訪問Google Scholar連驗證碼都沒了直接不讓用:

google scholar.png

簡直了!還能不能好好用Google了!

原因分析

針對DigitalOcean,可能的原因:

  1. 你的VPS被人用來做爬蟲爬Google,IP被封
  2. 你的IPv4網段有人做爬蟲,網段被封,躺槍
  3. 你的IPv6網段有人做爬蟲,網段被封,躺槍

不過呢,Google一般不會把你的IPv4和IPv6地址全都封掉的。

解決方法

對於第一種情況,還是老老實實做好安全策略吧...第二和第三種情況我們可以換用沒有被封的IP協議來解決

確定被封的IP

在通過如Shadowsocks使用Google時,如果出現驗證碼,那麼頁面下方會告知此時訪問Google的IP地址,你就能看到具體是IPv4被封還是IPv6被封啦。

強制IPv4

如果是IPv6地址被封,我們可以強制VPS使用IPv4訪問Google。

我的情況是VPS支持IPv4/IPv6雙棧,但默認會採用IPv4訪問,所以你最好檢查一下是不是VPS的hosts設置的Google的IPv6地址,如果這樣只需要把hosts註釋掉就好了

禁止VPS的IPv6訪問:
編輯/etc/sysctl.conf,在文件末尾加入:

# disable ipv6
net.ipv6.conf.all.disable_ipv6=1
net.ipv6.conf.default.disable_ipv6=1
net.ipv6.conf.lo.disable_ipv6=1

重啓Shadowsocks再訪問Google應該就沒問題了。

強制IPv6

如果是IPv4地址被封,我們可以強制VPS使用IPv6訪問Google。

方法很簡單,VPS的hosts中指定Google的IPv6地址就好了。編輯/etc/hosts,加入:

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

注意如上IPv6地址可能已失效,請參考ipv6-hosts/hosts at master · lennylxx/ipv6-hosts中提供的最新IPv6地址。

重啓Shadowsocks再訪問Google應該就沒問題了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章