python - 如何确保请求是从 Rotating IPs 发出的?
问题描述
我正在研究scrapy,我正在使用旋转IP的概念并随机更改UserAgent,但是,我不确定正在发出的请求是来自不同的IP,还是来自我的本地机器的IP?
我试图做的是:
由于每个请求都通过中间件的“process_request(self,request,spider)”方法,我已经制定了从免费代理 API 中随机获取代理 IP 的逻辑,将其写入文件,然后从文件中读取随机 IP ,将其附加到列表中并从列表中获取随机 IP,并将其附加到带有密钥“http_proxy”的元数据中。
以下是我目前用于轮换 IP 的逻辑:
def process_request(self, request, spider):
proxy_list = []
with open(PROXY_LIST_PATH) as fp:
while True:
line = fp.readline()
if not line:
break
proxy_list.append(line.strip().replace('"',''))
time_list=[1,2,3,4,5,6,7,8,9,10]
random_time_delay = random.choice(time_list)
time.sleep(random_time_delay)
random_ip = random.choice(proxy_list)
request.meta['http_proxy'] = random_ip
#request.meta['proxy'] = random_ip
print("\nHeaders:",request.headers)
print("\nRandom Proxyyyyy - ",random_ip
我不确定在 meta 中设置随机 IP 是否正确:
request.meta['proxy'] = random_ip
我应该使用'http_proxy,'proxy'吗?,我已经搜索过了,但找不到在请求中添加 IP 的正确方法?
有什么办法可以知道,我发出的每个请求都来自特定的代理 IP,而不是来自我的本地 IP?如果是,在 scrapy 中轮换 IP 的正确方法是什么?
解决方案
要检查与您的请求相关联的服务器的 IP,请向https://httpbin.org/ip发送一些请求并检查响应中的 IP。
推荐阅读
- json - 如何为接收到的 JSON 格式定义没有 POJOS 的数据模型?
- laravel - 如何从两个单独的表中调用变量
- javascript - 如何设置条件函数以响应一个组件而不是更大的组件
- amazon-web-services - 我正在尝试使用 AWS EB CLI (elastic beanstalk) 部署 python 应用程序
- java - CloseableHttpClient 和 CloseableHttpResponse 是否都需要显式关闭
- r - 如何启动多个 R 进程在同一个端口上侦听?
- oracle - Oracle 触发器有条件地审计插入
- angular - 使用 ngx-bootstrap 将服务的特定实例传递给模式的正确方法
- typescript - 创建仅使用字符串键扩展接口的 TypeScript 泛型类型
- java - 使用 Spring Boot Hibernate Criteria API PostGRES 仅获取查询的部分输入的结果