直接说结论:绝大多数人访问不了国外网站,访问不是国外因为电脑坏了,而是访问因为数据包在半路被拦下来了。你输入网址,国外浏览器发出请求,访问这个请求要经过多个路由器中转,国外最终到达目标服务器。访问问题出在中间某个节点——它识别出你要去的国外地方,然后把你的访问请求丢进黑洞。就这么简单。国外
我第一次意识到这件事是访问2013年。当时想查一个技术文档,国外GitHub能打开,访问但里面的国外raw.githubusercontent.com死活加载不出来。同一个网站,访问不同子域名,一个通一个不通。后来才明白,封锁不是一刀切,而是有选择性的。那会儿我还试过改hosts文件,把IP直接写死,刚开始管用,过了两天又不行了。IP被封了。
你在浏览器里敲一个域名,比如example.com,电脑先要问DNS服务器:这个域名对应哪个IP?正常情况下,DNS服务器会返回真实IP。但在某些网络环境下,DNS查询会被劫持,返回一个假IP。你拿着假IP去访问,当然什么都得不到。
判断方法很简单。打开命令行,输入nslookup example.com,看看返回的IP是不是乱七八糟的。如果返回的IP你拿去ping,发现根本不通或者指向某个国内机房,那基本就是DNS污染了。解决办法是换一个可信的DNS服务器,比如1.1.1.1或者8.8.8.8。不过这个方法现在也越来越不好使,因为DNS查询本身也可能被拦截。
代理服务器的工作原理是:你的请求先发给代理,代理替你去访问目标网站,然后把结果传回来。相当于找了个中间人帮你跑腿。VPN则是把你的整个网络流量加密,在你和VPN服务器之间建一条隧道。两者的区别在于,代理通常只针对浏览器或特定应用,VPN管全部流量。
我用了好几年Shadowsocks,后来换到V2Ray。这类工具的核心思路是把流量伪装成正常的HTTPS流量,让中间节点认不出来。配置起来不算复杂,但需要你自己有一台境外服务器。买服务器、装服务端、配客户端,前后大概半小时。成本的话,最便宜的VPS一年也就十几美元。
有人问为什么不用免费的。免费的东西要么慢得没法用,要么在你不知情的时候偷你的数据。我见过一个免费代理,表面上能用,实际上把所有HTTP请求的cookie都记录下来了。你登录微博、淘宝的会话信息全在别人手里。省那点钱不值得。
WebRTC会泄露你的真实IP。浏览器里有个功能叫WebRTC,用于实时通信,但它能绕过代理直接暴露你的本地IP。去browserleaks.com/webrtc测一下就知道。Firefox可以在about:config里把media.peerconnection.enabled设为false关掉它。
DNS泄露是另一个问题。你用了代理,但DNS查询还是走本地运营商,结果就是域名解析请求暴露了你访问了什么网站。解决方法是让代理接管DNS,或者在客户端配置里强制使用远程DNS解析。
还有浏览器指纹。你的屏幕分辨率、时区、语言、安装的字体、Canvas渲染结果,这些组合起来能唯一标识你。就算换了IP,网站还是能认出你。普通用户不用太在意这个,但如果你在做敏感的事情,Tor Browser是唯一认真处理了指纹问题的浏览器。
光在光纤里跑的速度是有限的。你到美国西海岸的服务器,理论最低延迟大概是120毫秒。到欧洲要200毫秒以上。这个数字没法优化,物理规律摆在那里。所以如果你觉得卡,先看看服务器在哪个位置。
线路质量比带宽更重要。同样是100Mbps,走CN2 GIA线路的服务器和走普通163线路的,体验天差地别。前者晚高峰不掉速,后者一到晚上就卡成幻灯片。买VPS的时候看清楚线路类型,别只看价格。
我现在的方案是:一台日本VPS跑V2Ray,配合Clash做规则分流。国内网站直连,国外走代理。看YouTube 4K不卡,延迟稳定在40毫秒左右。这套配置用了两年多,没出过什么大问题。偶尔IP被封,换个端口或者换个IP继续用。
说到底,访问国外网站这件事,技术门槛在逐年降低,但对抗也在升级。今天能用的方法,明天可能就失效了。保持学习,多准备几套方案,别把鸡蛋放在一个篮子里。