scrapy-proxy-pool: binariese antwurden ôfhannelje by blokdeteksje
Beheine de tekstpatroankontrôle fan scrapy-proxy-pool ta TextResponse en behâld status- en leech-lichem-besluten.
In PDF of byld kin goed troch in proxy oankomme en dan yn 'e blokdeteksje mislearje. Scrapy syn basis-Response lit de body-bytes sjen, mar syn text-eigenskip smyt de flater “Response content isn't text.” op.
As it ynstallearre scrapy-proxy-pool-belied response.text sûnder betingsten trochsiket, ferfange dat belied dan troch in typebewuste ferzje:
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
Kies it fia de útwreidingsynstelling fan it pakket:
PROXY_POOL_BAN_POLICY = "myproject.policy.BinaryAwarePolicy"
Dit behâldt de status- en leech-lichem-regels fan it belied en beheint de tekstsyktocht ta antwurden dy't dat stypje. It oerferfde útsûnderingsbelied bliuwt beskikber.
Besjoch dy oerbliuwende regels ek foar de applikaasje: in bewust leech 200-antwurd of in gewoane bestimmingsflater is net altyd bewiis fan in minne proxy. Hâld de middleware aktyf en feroarje de klassifikaasje dy't de mislearring feroarsake, ynstee fan alle blokdeteksje foar binariese downloads út te skeakeljen.