📜  具有身份验证的 selenium 代理 - Python (1)

📅  最后修改于: 2023-12-03 14:50:08.159000             🧑  作者: Mango

具有身份验证的 selenium 代理 - Python

使用代理是在爬虫或自动化脚本中非常常见的技巧。代理可以帮助您隐藏您的真实 IP 地址,并模拟从不同地理位置访问网站的可能性。这有助于避免 IP 封锁和爬虫检测。在这篇文章中,我将介绍如何使用 Python 和 Selenium WebDriver 来设置具有身份验证的代理。

步骤 1:安装 Selenium 和 PySocks

要使用 Selenium 和 PySocks 设置身份验证代理,您需要安装这两个库。您可以使用以下命令在 Python 环境中安装这些库:

pip install selenium PySocks
步骤 2:导入所需的库和设置 WebDriver

要使用 Selenium,您需要导入 webdriverOptions,然后设置 WebDriver。以下是示例代码:

from selenium import webdriver
from selenium.webdriver.common.proxy import Proxy, ProxyType
from selenium.webdriver.chrome.options import Options

prox = Proxy()
prox.proxy_type = ProxyType.MANUAL
prox.http_proxy = "<proxy-ip>:<port>"
prox.socks_proxy = "<proxy-ip>:<port>"
prox.ssl_proxy = "<proxy-ip>:<port>"

options = Options()
options.add_argument('--proxy-server=%s' % prox.proxy)

driver = webdriver.Chrome(options=options)

使用代理,我们需要定义一个 Proxy 对象,并将其传递给 ChromeOptions。在上面的代码中,我们定义了身份验证代理选项,并将其传递给 WebDriver。

步骤 3:设置代理身份验证

接下来,我们需要向代理提供身份验证凭据。根据您的代理设置,以下是一些选项:

  • 基本身份验证:如果您使用的是基本身份验证,您可以将用户名和密码添加到代理 URL 中,并将其传递给 http_proxyhttps_proxy。以下是示例代码:
prox.http_proxy = "http://<username>:<password>@<proxy-ip>:<port>"
  • NTLM 身份验证:如果您使用的是 NTLM 身份验证,您需要使用 PySocks 库,该库支持 NTLM 身份验证。以下是示例代码:
from socks import PROXY_TYPE_HTTP, PROXY_TYPE_SOCKS5, PROXY_TYPE_SOCKS4, socksocket, set_default_proxy
import socket

# Set default proxy
set_default_proxy((prox.proxy_type, prox.ssl_proxy.split(':')[0], int(prox.ssl_proxy.split(':')[1])))

# Wrap the socket with SOCKS
socks_options = dict(
    sock = socksocket(),
    username = '<username>',
    password = '<password>',
    proxy_type = PROXY_TYPE_SOCKS4,  # or PROXY_TYPE_SOCKS5, PROXY_TYPE_HTTP
    rdns = True, # enable DNS resolution for SOCKS proxy
)

s = socks_options['sock']
s.setsockopt(socket.SOL_SOCKET, socket.SO_KEEPALIVE, 1)
s.connect((prox.ssl_proxy.split(':')[0], int(prox.ssl_proxy.split(':')[1])))

# Create a new webdriver instance
driver = webdriver.Chrome()
总结

使用身份验证代理可以帮助您在爬虫或自动化脚本中隐藏您的真实 IP 地址,并模拟从不同地理位置访问网站的可能性。在本文中,我介绍了如何使用 Python 和 Selenium WebDriver 来设置具有身份验证的代理。请记住,在设置代理时,根据您的代理设置,您可能需要选择不同的选项来提供身份验证凭据。