2016-07-21 4 views

Antwort

2

Sie müssen die Header replizieren, die Sie in der Anfrage sehen.

Wenn Sie die Antwort-Header inspizieren können Sie sehen: amazon.ca next page headers

von dem aus Sie benötigen scrapy.Request.headers Attribut zu aktualisieren. Mit wenigen dieser Werte. Zum größten Teil können Sie den Cookie überspringen, da scrapy diesen selbst verwaltet und normalerweise für Ajax-Anfragen wie diesen ist es bedeutungslos.

Für diesen Fall habe ich es geschafft, eine erfolgreiche Antwort zu erhalten, indem ich nur X-Requested-With Header repliziert. Dieser Header wird verwendet, um anzuzeigen, dass eine Ajax-Anfrage stattfindet.

Sie können tatsächlich testen und konstruieren diese Echtzeit:

scrapy shell <url> 
# gives you 403 
request.headers.update({'X-Requested-With': 'XMLHttpRequest'}) 
request.headers.update({'User-Agent': <some user agent>}) 
fetch(request) 
# now the request is redownloaded and it's 200!