【发布时间】:2019-07-16 13:54:20
【问题描述】:
即使我在 Selenium Headless Chrome 中使用代理和用户代理轮换(并且我已经通过 https://free-proxy-list.net/ 和 TOR 提取了 ip,并使用 https://httpbin.org/ 对其进行了测试,它显示了预期的代理 ip 和用户代理我知道这应该是可行的),我在 Glassdoor 主页“https://www.glassdoor.com/index.htm”第一次尝试使用新 IP 和用户代理时仍然被阻止。
作为上下文:
- 在本地运行的 Docker 容器中开发
- 在 Selenium Python 中使用 Headless Chrome
- 使用最近从
https://free-proxy-list.net/提取的代理以及带有旋转 TOR 代理的 Selenium(两者都给出相同的结果) - 使用来自
https://developers.whatismybrowser.com/useragents/explore/software_name/chrome/的随机用户代理,符合 Docker 容器操作系统和浏览器规范(X11 和 Chrome/6 或 Chrome/7,因此不存在 JS 显示问题) - 抓取 Glassdoor 招聘信息。其他招聘网站运行良好,因此它是 Glassdoor 特有的。
- 如果我使用像 ProtoVPN 这样的免费本地 VPN 提供商,它工作得很好,但这个解决方案不可扩展,因为整个想法不是在这个项目上花钱,而是让收集自动化(不是任何商业产品,只是想要足够的数据来练习一些 NLP/机器学习)
这是 Chrome 设置:
chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument("--no-sandbox")
chrome_options.add_argument("--headless")
chrome_options.add_argument("--disable-gpu")
chrome_options.add_argument("--disable-translate")
chrome_options.add_argument(f"--proxy-server={ip}")
chrome_options.add_argument(f"user-agent=[{random_user_agent()}]")
我的理论是 Glassdoor 正在以某种方式测试我的浏览器,它表明我正在使用代理,或者我有一个设置表明它是一个自动浏览器。关于正在发生的事情有什么想法吗?
编辑: 我已经检查过 Selenium 被检测到的可能性,但现实是,即使我使用 Selenium 和免费代理/TOR/VPN,使用 VPN 进行抓取也没有问题,因此这意味着问题必须在使用代理与 VPN,所以也许有人可以帮助我了解这是怎么回事。
【问题讨论】:
-
我和@JeffC 一起讨论这个问题。我对这个问题感到不舒服,因为您似乎在寻求有关如何绕过安全功能的建议。
-
有很多方法可以对浏览器进行指纹识别和检测硒...您只是接触了 IP 和用户代理的皮毛。但是,您应该遵守他们的使用条款并停止抓取
标签: python selenium docker google-chrome web-scraping