Selenium



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


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


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

    pip install selenium-wire


代理身份验证

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


    USERNAME = "your_username"
PASSWORD = "your_password"
ENDPOINT = "server.iphtml.biz:15000"


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


测试代理服务器连接
如果您需要检查代理是否在工作,则应该访问 ipinfo.io。如果一切工作正常,它将返回您正在使用的代理的 IP 地址。

检查代理是否运行:

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


IPHTML 的住宅代理与 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 = "server.iphtml.biz:15000"

    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://ipinfo.io/")
            return f'\nYour IP is: {driver.find_element(By.CSS_SELECTOR, "pre").text}'
        finally:
            driver.quit()

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