Scrapy pot mostrar la redirecció abans de seguir-la
Exposa temporalment l'estat de redirecció inicial i la capçalera Location d'una GET amb proxy mitjançant les metadades de la petició, mantenint el tractament de redireccions separat del filtratge d'errors HTTP.
Una GET amb proxy pot arribar a un servidor i després seguir redireccions fins que el fracàs final amaga la primera resposta. Exposa aquesta resposta inicial per al diagnòstic:
request = scrapy.Request(
'https://service.example/page',
callback=inspect_redirect,
meta={
'proxy': 'http://proxy.example:8080',
'dont_redirect': True,
'handle_httpstatus_list': [301, 302, 303, 307, 308],
},
)
Programa aquesta petició mitjançant el flux d'inici o callback existent de l'aranya. Per a una prova permesa de pàgina pública, la llista de proxys HTTP proporciona candidats per a l'URL de proxy de la petició. inspect_redirect hauria de registrar l'estat de la resposta i la capçalera Location en lloc de tornar-la a seguir cegament.
dont_redirect atura la redirecció automàtica per a aquesta petició. handle_httpstatus_list permet que els estats indicats arribin al callback en lloc de ser rebutjats pel filtratge d'errors HTTP. Els paràmetres afecten responsabilitats diferents del middleware.
Comprova què selecciona la redirecció: un URL canònic previst, un esquema o nom d'amfitrió diferent, una pàgina d'inici de sessió o un cicle repetitiu. Un 302 rebut després d'un transport correcte és una observació diferent de no poder obrir la connexió de proxy.
Quan es restaura el tractament normal de redireccions, Scrapy exposa redirect_urls i redirect_reasons a les metadades de la petició de resposta. Aquestes poden conservar el camí cap a un resultat final sense deixar les redireccions desactivades durant tot el rastreig.
Una resposta terminal no és automàticament la pàgina que l'aplicació pretenia. Conserva la destinació i el contingut de la resposta amb el diagnòstic d'encaminament.