البروكسي في Scrapy
HttpProxyMiddleware مفعّل افتراضيًا — يكفي وضع سلسلة الاتصال في meta الخاص بالطلب.
أبسط عنكبوت
لا شيء يحتاج إلى تفعيل: يقف HttpProxyMiddleware في السلسلة الافتراضية ويقرأ مفتاح proxy من meta. وتذهب بيانات الدخول داخل العنوان تمامًا كما في أي سلسلة اتصال عادية.
import scrapy
class IpSpider(scrapy.Spider):
name = "ip"
proxy = "http://LOGIN__cr.de:PASSWORD@gw.dataimpulse.com:823"
def start_requests(self):
yield scrapy.Request(
"https://ipinfo.io/json",
meta={"proxy": self.proxy},
)
def parse(self, response):
self.logger.info(response.text)ما ينبغي الانتباه له أثناء الجمع
إعادة المحاولة على المنفذ 823 تأتي من عنوان آخر — هذا هو التبديل يعمل، لا عطل. تتصرّف إعادة محاولات Scrapy هنا كما يجب، لكن لا يجوز أن يعتمد أي منطق على ثبات العنوان بين الطلبات؛ ولهذا وُجدت المنافذ الثابتة 10000–20000.
اجعل DOWNLOAD_TIMEOUT سخيًّا: المخرج السكني يستجيب أبطأ من مركز البيانات، وطلب بلا مهلة قد يبقى معلّقًا دقائق. تسمح الباقة بألفَي اتصال متزامن، وهو سقف لا يقاربه الجمع الاعتيادي.