如何检查 Scrapy Image Pipeline 是否使用代理下载图片?
How can I check if Scrapy Image Pipeline is using a proxy to download images?
我构建了一个抓取工具,想在 scrapy 中使用代理下载一些图片。不知道是不是真的通过代理下载。响应 Headers 不显示 IP。此外,如果我将 IP 更改为随机 IP,它仍会下载图像。
我如何确保它使用代理下载图像?
谢谢
Pipelines.py
import scrapy
from scrapy.pipelines.images import ImagesPipeline
from scrapy.exceptions import DropItem
class MyImagesPipeline(ImagesPipeline):
def get_media_requests(self, item, info):
meta = {'proxy': 'http://23.323.44.22:11111/'}
for image_url in item['image_urls']:
yield scrapy.Request(image_url,meta=meta)
Settings.py
ITEM_PIPELINES = {'myproject.pipelines.MyImagesPipeline': 1}
如果下载使用 随机 IP,则不使用代理。
Scrapy Doc 说:
“您还可以将每个请求的元键 proxy
设置为 http://some_proxy_server:port
之类的值。也许代理 url 末尾的 '/' 混淆了 Scrapy?
为了确保使用代理,我会使用 Wireshark 并在代理 IP 上进行过滤。如果您看到它的 IP 的流量,则很可能它已被使用。
我构建了一个抓取工具,想在 scrapy 中使用代理下载一些图片。不知道是不是真的通过代理下载。响应 Headers 不显示 IP。此外,如果我将 IP 更改为随机 IP,它仍会下载图像。 我如何确保它使用代理下载图像? 谢谢
Pipelines.py
import scrapy
from scrapy.pipelines.images import ImagesPipeline
from scrapy.exceptions import DropItem
class MyImagesPipeline(ImagesPipeline):
def get_media_requests(self, item, info):
meta = {'proxy': 'http://23.323.44.22:11111/'}
for image_url in item['image_urls']:
yield scrapy.Request(image_url,meta=meta)
Settings.py
ITEM_PIPELINES = {'myproject.pipelines.MyImagesPipeline': 1}
如果下载使用 随机 IP,则不使用代理。
Scrapy Doc 说:
“您还可以将每个请求的元键 proxy
设置为 http://some_proxy_server:port
之类的值。也许代理 url 末尾的 '/' 混淆了 Scrapy?
为了确保使用代理,我会使用 Wireshark 并在代理 IP 上进行过滤。如果您看到它的 IP 的流量,则很可能它已被使用。