目录
问题概述
在爬取某大型网站时有时候可能会出现需要进行手机安全验证的情况。
当爬虫项目是部署在 Linux 服务器上,且采用 --headless无头模式无界面运行时会发现无法进行安全验证。即使在本地有界面的浏览器手工通过了手机认证,但在不同 IP 地址的 Linux 服务器上仍需再次验证。
解决思路
解决的方式有很多,这里根据实际情况我采用了一种相对轻巧的方式:使用 TinyProxy 将 Linux 服务器设置成代理服务器从而进行 HTTP 代理。这样我们便可在本地浏览器中设置好代理,再由本地操作有界面浏览器进行访问目标网站以及验证等操作,期间请求会被代理服务器所代理,通过这种方式达到让 Linux 服务器通过安全验证的效果。
设置代理服务器
将运行程序的 Linux 服务器设置成代理服务器有多种方式,这里我采用的是 TinyProxy。Tinyproxy是一个轻量级的HTTP/HTTPS代理守护程序。它从头到脚设计得既快又小,是一种理想的解决方案,适用于需要完整功能的HTTP代理的嵌入式部署,但大型代理的系统资源不可用。
// 安装 tinyproxy yum -y install tinyproxy // 修改配置 (修改 Port 端口,默认为 8888,修改Allow 为自己的 IP 地址) vi /etc/tinyproxy/tinyproxy.conf // 启动停止等命令如下(这里还需要注意防火墙等设置) systemctl start tinyproxy.service systemctl restart tinyproxy.service systemctl stop tinyproxy.service systemctl status tinyproxy.service systemctl enable tinyproxy.service // 更多关于 TinyProxy 可查看官网 https://tinyproxy.github.io/本地浏览器配置代理
这里以 chrome 浏览器为例,配置代理步骤如下:
之后重启浏览器进行访问。
最后
以上就是我采用 TinyProxy 代理解决 Linux上 --headless 浏览器无法进行手机安全认证的解决方案,希望对各位有所帮助,
感谢您的阅读,如果喜欢本文欢迎关注和转发,本头条号将坚持持续分享IT技术知识。对于文章内容有其他想法或意见建议等,欢迎提出共同讨论共同进步。