scrapy-proxy-pool: پابندی کی شناخت میں بائنری جوابات کی نمٹاٹ
scrapy-proxy-pool کی متن کے نمونے کی جانچ کو TextResponse تک محدود کریں اور حالت اور خالی جسم کے فیصلے برقرار رکھیں۔
PDF یا تصویر پراکسی کے ذریعے کامیابی سے آ سکتی ہے اور پھر پابندی کی شناخت میں ناکام ہو سکتی ہے۔ Scrapy کا بنیادی Response body بائٹس دکھاتا ہے، لیکن اس کی text خصوصیت “Response content isn't text.” خرابی پیدا کرتی ہے۔
اگر نصب شدہ scrapy-proxy-pool پالیسی بلا شرط response.text تلاش کرتی ہے تو اس پالیسی کو قسم سے واقف ورژن سے بدل دیں:
from scrapy.http import TextResponse
from scrapy_proxy_pool.policy import BanDetectionPolicy
class BinaryAwarePolicy(BanDetectionPolicy):
def response_is_ban(self, request, response):
if isinstance(response, TextResponse):
if self.BANNED_PATTERN.search(response.text):
return True
if response.status not in self.NOT_BAN_STATUSES:
return True
return response.status == 200 and not response.body
اسے پیکیج کی ایکسٹینشن سیٹنگ کے ذریعے منتخب کریں:
PROXY_POOL_BAN_POLICY = "myproject.policy.BinaryAwarePolicy"
یہ پالیسی کے حالت اور خالی جسم کے قواعد برقرار رکھتا ہے اور متن کی تلاش کو صرف ان جوابات تک محدود کرتا ہے جو اسے سہارا دیتے ہیں۔ ورثے میں ملی استثنا پالیسی بھی دستیاب رہتی ہے۔
باقی قواعد کا بھی ایپلیکیشن کے لیے جائزہ لیں: جان بوجھ کر خالی 200 جواب یا عام منزل کی خرابی ہمیشہ خراب پراکسی کا ثبوت نہیں ہوتی۔ مڈل ویئر کو فعال رکھیں اور ناکامی کا سبب بننے والی درجہ بندی تبدیل کریں، بائنری ڈاؤن لوڈ کے لیے تمام پابندی کی شناخت بند کرنے کے بجائے۔