Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何确保请求是由旋转IP发出的?_Python_Python 3.x_Web Scraping_Scrapy_Ip - Fatal编程技术网

Python 如何确保请求是由旋转IP发出的?

Python 如何确保请求是由旋转IP发出的?,python,python-3.x,web-scraping,scrapy,ip,Python,Python 3.x,Web Scraping,Scrapy,Ip,我正在研究scrapy,在那里我使用了一个轮换IP和随机更改用户代理的概念, 但是,我不确定发出的请求是来自不同的IP,还是来自本地机器的IP 我想做的是: 当每个请求通过中间件的“process_request(self、request、spider)”方法时, 我从免费代理API中随机抽取代理IP,将其写入文件,然后 从文件中读取随机IP,将其附加到列表中,并从列表中获取随机IP,然后使用键“http_proxy”将其附加到meta 以下是我目前用于旋转IP的逻辑: def proc

我正在研究scrapy,在那里我使用了一个轮换IP和随机更改用户代理的概念, 但是,我不确定发出的请求是来自不同的IP,还是来自本地机器的IP

我想做的是:

当每个请求通过中间件的“process_request(self、request、spider)”方法时, 我从免费代理API中随机抽取代理IP,将其写入文件,然后 从文件中读取随机IP,将其附加到列表中,并从列表中获取随机IP,然后使用键“http_proxy”将其附加到meta

以下是我目前用于旋转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']=随机ip

我是否应该使用“http_proxy”,“proxy”,我已经搜索过了,但找不到在请求中添加IP的正确方法


有没有办法知道,我发出的每个请求都来自特定的代理IP而不是本地IP?如果是,在scrapy中旋转IP的正确方法是什么?

要检查与您的请求相关联的服务器的IP,请发送一些请求并从响应中检查IP。

要检查与您的请求相关联的服务器的IP,请发送一些请求并从响应中检查IP。

测试代码,通过向
https://api.ipify.org?format=json
。除非您计划动态添加代理,否则请在文本文件上使用列表。
request.meta['proxy']=random_ip
是正确的,我已经这么做了很多年:)您通过向
https://api.ipify.org?format=json
。除非您计划动态添加代理,否则请在文本文件中使用列表。
request.meta['proxy']=random\u ip
是正确的,我已经这么做了很多年:)