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())