首页 > 解决方案 > 如何确保请求是从 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 的正确方法是什么?

标签: pythonpython-3.xweb-scrapingscrapyip

解决方案



推荐阅读