目录
问题
当我们访问非标准端口的网站时(即HTTP协议下不使用80,HTTPS协议下不使用443),我们的HTTP(s)代理通常会失效并返回403等错误码。
问题现象还原如下:
如上图所示,我访问这个520端口的网站时,挂了代理反而无法请求了。
这时候就有人说了,“是不是你的代理有问题啊?”,本身上述使用的就是商用代理,为了保险起见,我也使用自建代理进行了测试,返回结果如下:
至此,基本确认了问题,要是“有人”还不信,有人可以自己试试~
解决方案
(首先明晰一点:我们的HTTP(s)代理大都是采用squid或类似方案搭建的)
其实从上述已经分析出了问题原因,就是代理导致的。但是我们还是需要盖棺定论一下。于是经过我契而不舍的寻找,找到了这篇squid的官方说明(https://docs.diladele.com/faq/squid/allow_non_standard_port_through_squid.html):
说明和实际Access Denied的现象一致,同时他也给出了解决方案,如果要让你的代理支持非标准的端口,则需要配置你的squid.conf文件如下:
如果我们使用自建代理可以按照上述方案修改配置,但是,当我们使用商业代理时,并不一定能随意的修改这处配置,第三方也并不一定会支持你如此修改。
好消息是,这类问题一般只出现在资源文件的获取,而极少出现在正常数据访问抓取时。(这似乎也能成为避免资源被抓取的反爬虫手段?)