我正在研究scrapy,其中我使用了旋转IP和随机更改UserAgent的概念, 但是,我不确定发出的请求是来自其他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设置为以下方法是否正确:
我应该使用'http_proxy,'proxy'吗? ,我已经进行了搜索,但是找不到在请求中添加IP的正确方法?
是否有办法知道,我发出的每个请求都是来自特定的代理IP,而不是来自本地IP?如果是,那么轮流抓取IP的正确方法是什么?