#今天又看了啥 #golang #反爬虫
为什么用 Go 访问某网站始终会 503 Service Unavailable ?
> 某一个神奇的网站,用户可以正常访问,用 Python 等语言写的(简易)爬虫可以正常访问,甚至直接用 curl 也能正常访问,唯独用 Go 语言写的(简易)爬虫始终被 503 Service Unavailable 拒之门外,尝试多种伪装策略(如 User-Agent)均以失败告终。更加神奇的是,如果让 Go 发出的请求经由本机的某个代理(比如为了抓包观察),那么一切又能正常工作了(这一点是我在调试过程中发现的,一开始并不知道)。
...
> 根源确实在于 Go HTTP Client 所采用的默认 TLS Cipher Suites,由于其过于特殊,被对方服务器视作了某种检测特征,据此对请求返回 503 Service Unavailable,只需要人为改变 Cipher Suites,便可以轻松绕开这样的检测。
https://www.zackwu.com/posts/2021-03-14-why-i-always-get-503-with-golang/
为什么用 Go 访问某网站始终会 503 Service Unavailable ?
> 某一个神奇的网站,用户可以正常访问,用 Python 等语言写的(简易)爬虫可以正常访问,甚至直接用 curl 也能正常访问,唯独用 Go 语言写的(简易)爬虫始终被 503 Service Unavailable 拒之门外,尝试多种伪装策略(如 User-Agent)均以失败告终。更加神奇的是,如果让 Go 发出的请求经由本机的某个代理(比如为了抓包观察),那么一切又能正常工作了(这一点是我在调试过程中发现的,一开始并不知道)。
...
> 根源确实在于 Go HTTP Client 所采用的默认 TLS Cipher Suites,由于其过于特殊,被对方服务器视作了某种检测特征,据此对请求返回 503 Service Unavailable,只需要人为改变 Cipher Suites,便可以轻松绕开这样的检测。
https://www.zackwu.com/posts/2021-03-14-why-i-always-get-503-with-golang/