Sie müssen die Header replizieren, die Sie in der Anfrage sehen.
Wenn Sie die Antwort-Header inspizieren können Sie sehen:
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!