【问题标题】:A single website is denying selenium only with VPN单个网站仅通过 VPN 拒绝 selenium
【发布时间】:2021-04-17 23:37:35
【问题描述】:

我正在尝试通过 VPN 使用 selenium 连接到 this 网站,但没有成功。

奇怪的是,该网站确实在具有相同 VPN 连接的普通浏览器中加载。更奇怪的是,我已经使用 selenium 通过 VPN 尝试了大约 100 个其他网站,并且它们都可以正常工作!疯了。

尝试连接时的具体错误消息是: 连接超时,服务器响应时间过长。这是我连续第二天尝试相同的结果。我也尝试了其他一些VPN,但没有成功。如果没有 VPN,我可以使用 selenium 访问该网站,因此不知何故,selenium 和 VPN 的组合对于这 1 个网站来说是有问题的。

使用的 VPN 是 Linux 上的 OpenVPN 2.4.4,它是使用 OpenSSL 1.1.1、tcp443 设置的。

我也尝试直接在 Selenium 中设置 VPN,但没有成功。如果有人对为什么会发生这种情况有任何线索,那将对我有很大帮助。谢谢。

【问题讨论】:

  • 所以有些网站不喜欢被抓取或自动化,服务器会阻止请求。如果网站有 API,您应该使用它。如果您在您的网站上提供一项服务来自动执行您可能会因为不遵守用户政策有时甚至是法律费用而陷入麻烦的服务,请小心。
  • 我没有看到问题。我只是想知道为什么网站只能在使用 selenium 时才能检测到 VPN。两者分别不会被检测到。
  • 为了将来参考,我还尝试了包含多种类型标头的请求库,但均未成功。我终于能够通过在 Chrome 浏览器中使用 Selenium 而不是我首先使用的 Firefox 来使用 VPN 访问该页面。

标签: python selenium firefox vpn openvpn


【解决方案1】:

我了解网站发布的抓取政策,并相应地遵守这些政策。 robots.txt 文件明确指出,某些页面可以通过适当的抓取延迟进行抓取。

我的问题的核心是网站如何仅在使用 selenium 时才能检测到 VPN。两者分别没有被检测到。

我曾尝试使用请求库和多种类型的标头通过 VPN 访问此网页,但仍未成功。最后,我通过使用 Chrome 驱动程序而不是 Firefox 启动 Selenium 成功了。这使我可以通过 VPN 访问该站点:

from selenium import webdriver
from selenium.webdriver.chrome.service import Service

service = Service('/mnt/wwn-0x5002538e00000000/chromedriver')
service.start()
driver = webdriver.Remote(service.service_url)
driver.get('http://www.url....');

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-11-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-15
    • 1970-01-01
    • 2020-11-21
    • 1970-01-01
    相关资源
    最近更新 更多