v2ex 访问问题尝试记录

由于 job-opportunity-reminder 项目,发现 Github Action 定时执行的方式不能保证按时可靠的执行(官方限制了高峰时段的执行),所以就想在本地运行的方式,但是 v2ex 的网络问题比较头疼,要么使用代理-这个已实现,但是要是没有代理能不能直接访问呢?

  • 第一次尝试: 直接解析 v2exip (国内的墙会导致访问国内 dns 的到错误的 ip 需要通过别的方式获取),通过 ip 直接访问,结果访问被 cloudfare拦截:
  • 第二次尝试:还以为是浏览器输入 ip 访问导致的,就尝试修改本地 hosts 文件,然后用代码请求,结果本地无法与目标 ip 建立链接,被重置了,感觉到奇怪,这时候本地没有开代理然后通过 谷歌浏览器 输入域名访问,发现对于 v2ex 的网站是可以加载访问的!问题在哪?
  • 第三次尝试:换浏览器访问域名,分别使用 safari火狐 结果报错无法访问,似乎是安全证书的问题。

这时候的情况就是 谷歌浏览器 可以访问, safari火狐 无法访问,而且无法访问的原因是安全证书,想到之前开启代理服务器时都是通过 谷歌浏览器 访问的, 谷歌浏览器 应该有 v2ex 的安全证书信息,所以关闭代理通过 hosts 指定域名解析后是可以访问的。但是对于其他之前未访问过 v2ex 的浏览器需要获取安全证书时失败了,这点也可以从第二次尝试通过代码访问失败的错误验证。尤其目标 ip 也是可以 ping 通的情况。

结论就是:获取 v2ex 安全证书的环节被墙破坏了,理论上提前先获取安全证书,然后通过代码实现:想办法跳过获取安全证书这一环节,是可以用代码访问 v2ex 的,但是这个获取安全证书的环节的是 https 协议的一个步骤。所以性价比不高,所以就不再继续尝试。

还是使用代理方式吧。(不过要是走流量的代理,可以考虑先开代理访问一次后,再修改 hosts 指定 v2exid -是实际id,能 ping通。这样再关闭代理也可以访问了,可以节省流量。)