📅  最后修改于: 2023-12-03 14:50:08.159000             🧑  作者: Mango
使用代理是在爬虫或自动化脚本中非常常见的技巧。代理可以帮助您隐藏您的真实 IP 地址,并模拟从不同地理位置访问网站的可能性。这有助于避免 IP 封锁和爬虫检测。在这篇文章中,我将介绍如何使用 Python 和 Selenium WebDriver 来设置具有身份验证的代理。
要使用 Selenium 和 PySocks 设置身份验证代理,您需要安装这两个库。您可以使用以下命令在 Python 环境中安装这些库:
pip install selenium PySocks
要使用 Selenium,您需要导入 webdriver
和 Options
,然后设置 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。
接下来,我们需要向代理提供身份验证凭据。根据您的代理设置,以下是一些选项:
http_proxy
或 https_proxy
。以下是示例代码:prox.http_proxy = "http://<username>:<password>@<proxy-ip>:<port>"
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 来设置具有身份验证的代理。请记住,在设置代理时,根据您的代理设置,您可能需要选择不同的选项来提供身份验证凭据。