scrapy-proxy-pool: erantzun bitarrak blokeo-detekzioan kudeatzea
Mugatu scrapy-proxy-pool-en testu-ereduaren egiaztapena TextResponse-ra, egoera eta gorputz hutsaren erabakiak mantenduz.
PDF edo irudi bat proxya zeharkatuz behar bezala irits daiteke eta gero blokeo-detekzioan huts egin. Scrapy-ren oinarrizko Response-k gorputzaren byteak erakusten ditu, baina bere text propietateak “Response content isn't text.” errorea jaurtitzen du.
Instalatutako scrapy-proxy-pool politikak response.text baldintzarik gabe bilatzen badu, ordezkatu politika hori mota kontuan hartzen duen bertsio batekin:
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
Hautatu paketearen luzapen-ezarpenaren bidez:
PROXY_POOL_BAN_POLICY = "myproject.policy.BinaryAwarePolicy"
Horrek politikaren egoera eta gorputz hutsaren arauak mantentzen ditu, eta testu-bilaketa onartzen duten erantzunetara mugatzen du. Oinordetzan jasotako salbuespen-politika ere eskuragarri jarraitzen du.
Berrikusi gainerako arau horiek aplikaziorako ere: nahita hutsik dagoen 200 erantzun bat edo helmuga-errore arrunta ez dira beti proxy txarraren froga. Mantendu middlewarea aktibo eta aldatu hutsegitea eragin zuen sailkapena, deskarga bitarretarako blokeo-detekzio osoa desgaitzea baino.