scrapy-proxy-pool: bināro atbilžu apstrāde bloķēšanas noteikšanā
Ierobežojiet scrapy-proxy-pool teksta modeļa pārbaudi ar TextResponse, saglabājot statusa un tukša ķermeņa lēmumus.
PDF vai attēls var veiksmīgi nonākt caur starpniekserveri un pēc tam neizdoties bloķēšanas noteikšanā. Scrapy pamata Response atklāj ķermeņa baitus, bet tā rekvizīts text izraisa kļūdu “Response content isn't text.”
Ja instalētā scrapy-proxy-pool politika meklē response.text bez nosacījumiem, aizstājiet to ar tipu apzinošu versiju:
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
Izvēlieties to, izmantojot pakotnes paplašinājuma iestatījumu:
PROXY_POOL_BAN_POLICY = "myproject.policy.BinaryAwarePolicy"
Tas saglabā politikas statusa un tukša ķermeņa noteikumus un ierobežo teksta meklēšanu ar atbildēm, kas to atbalsta. Mantotā izņēmuma politika joprojām ir pieejama.
Pārskatiet arī šos atlikušos noteikumus lietojumprogrammai: tīši tukša 200 atbilde vai parasta galamērķa kļūda ne vienmēr pierāda sliktu starpniekserveri. Atstājiet starpprogrammatūru aktīvu un mainiet klasifikāciju, kas izraisīja kļūmi, tā vietā lai bināriem lejupielādēm izslēgtu visu bloķēšanas noteikšanu.