PDF або выява могуць паспяхова прайсці праз проксі, а затым зламацца ў выяўленні блакіроўкі. Базавы Response у Scrapy паказвае байты цела, але яго ўласцівасць 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 або звычайная памылка пункта прызначэння не заўсёды сведчаць пра дрэнны проксі. Пакіньце прамежкавае ПЗ актыўным і змяніце класіфікацыю, якая выклікала збой, замест таго каб цалкам адключаць выяўленне блакіроўкі для бінарных спамповак.

Падобныя артыкулы