import requests
from fake_useragent import UserAgent
from stem import Signal
from stem.control import Controller
# 控制 Tor 的控制器
with Controller.from_port(port=9051) as controller:
controller.authenticate()
# 用 Tor 更新 IP 地址
controller.signal(Signal.NEWNYM)
# 从代理池中随机选择一个代理地址
proxy_pool = [
'http://xxx.xxx.xxx.xxx:xxxx',
'http://xxx.xxx.xxx.xxx:xxxx',
'http://xxx.xxx.xxx.xxx:xxxx',
# 其他代理地址
]
proxy = {
'http': random.choice(proxy_pool)
}
# 随机生成 User-Agent
user_agent = UserAgent().random
# 构造请求头部
headers = {
'User-Agent': user_agent,
'Referer': 'https://www.example.com/',
'X-Forwarded-For': 'xxx.xxx.xxx.xxx' # 伪造 IP 地址
}
# 发起请求
response = requests.get('https://www.example.com/', headers=headers, proxies=proxy)
if response.status_code == 200:
# 对响应进行处理
print(response.text)
else:
# 处理错误信息
print('请求失败,状态码为:', response.status_code)
代码解释:
1.使用 Tor 更新 IP 地址:Tor 是一种匿名化技术,可以帮助用户隐藏 IP 地址,防止被服务器封禁。在这里,我们使用 stem 库和 Tor 控制器来更新 IP 地址。
2.使用代理池:代理池是一组代理服务器地址的集合,可以用来帮助用户隐藏真实 IP 地址。在这里,我们从代理池中随机选择一个代理地址,作为请求的代理地址。
3.随机生成 User-Agent:在第一个示例代码中,我们只是简单地设置了一个自定义的 User-Agent。而在这里,我们使用了 fake_useragent 库来随机生成 User-Agent,增加了请求头部的随机性。
4.伪造 IP 地址:在请求头部中,我们添加了一个 X-Forwarded-For 字段,并伪造了一个 IP 地址。这可以帮助我们在一定程度上隐藏真实 IP 地址。