Selenium

Selenium是一个有助自动化网络浏览器网站测试互动等的工具。当您需要与浏览器互动以执行一些任务时,它非常实用,例如点击按钮、滚动等。即使 Selenium 主要用于网站测试,您亦可用它来进行网络抓取,因为它有助在网站上找到所需的公共数据。

将 Selenium 集成到 Oxylabs 代理,请遵循以下说明操作:

  • 首先,您需要安装 Selenium Wire,以扩展 Selenium 的 Python 绑定,因为使用默认的 Selenium 模块来实现需要认证的代理会使整个过程变得复杂。您可以使用 pip 命令来执行:pip install selenium-wire

  • 另一个推荐的集成包是 webdriver-manager。这是一个简化不同浏览器的二进制驱动管理的软件包。在这种情况下,没有必要在每次更新后手动下载新版本的网络驱动程序

  • 您亦可用 pip 命令来安装 webdriver-manager以及:pip install webdriver-manager

代理身份验证

设置好后,您便可进入下一个部分 – 代理认证。您会被提示指定您的账户凭证来使代理运作。

USERNAME = "your_username" PASSWORD = "your_password" ENDPOINT = "pr.oxylabs.io:7777"

您需要用您代理用户的用户名和密码调整 your_usernameyour_password字段。

测试代理服务器连接

如果您需要检查代理是否在工作,则应该访问 ip.oxylabs.io。如果一切工作正常,它将返回您正在使用的代理的 IP 地址。

检查代理是否运行:

try:
    driver.get("https://ip.oxylabs.io/")
    return f'\nYour IP is: {driver.find_element(By.CSS_SELECTOR, "pre").text}'
finally:
    driver.quit()

Oxylabs 的住宅代理与 Selenium 集成的完整代码:

from selenium.webdriver.common.by import By
from seleniumwire import webdriver
# A package to have a chromedriver always up-to-date.
from webdriver_manager.chrome import ChromeDriverManager

USERNAME = "your_username"
PASSWORD = "your_password"
ENDPOINT = "pr.oxylabs.io:7777"

def chrome_proxy(user: str, password: str, endpoint: str) -> dict:
    wire_options = {
        "proxy": {
            "http": f"http://{user}:{password}@{endpoint}",
            "https": f"http://{user}:{password}@{endpoint}",
        }
    }

    return wire_options

def execute_driver():
    options = webdriver.ChromeOptions()
    options.headless = True
    proxies = chrome_proxy(USERNAME, PASSWORD, ENDPOINT)
    driver = webdriver.Chrome(
        ChromeDriverManager().install(), options=options, seleniumwire_options=proxies
    )
    try:
        driver.get("https://ip.oxylabs.io/")
        return f'\nYour IP is: {driver.find_element(By.CSS_SELECTOR, "pre").text}'
    finally:
        driver.quit()

if __name__ == "__main__":
    print(execute_driver())

最后更新于