0

Python requests モジュールの使用方法を学び始めています。練習のために、チャレンジ/レスポンスの問題を管理しようとしました: http://lema.rae.es/drae/srv/search?val=hacerのデータにアクセスしたいです

Firefox の「Tamper Data」プラグインを使用して、必要な HTTP リクエストを調べました。

GET http://lema.rae.es/drae/srv/search?val=hacer
POST http://lema.rae.es/drae/srv/search?val=hacer

2 つの HTTP 要求で Firefox から送信される正確なヘッダーをコピーし、Python で JavaScript の「チャレンジ」機能を実装しました。それから私は次のことをしています:

url = "http://lema.rae.es/drae/srv/search?val=hacer"
headers = { ... }
r1 = requests.get(url=url, headers=headers)
html = r1.content.decode("utf-8")
formdata = challenge(html)
headers = { ... }
r2 = requests.post(url=url, data=formdata, headers=headers)

残念ながら、サーバーは期待どおりに応答しません。「r.request.headers」を介して送信しているすべてのヘッダーを確認しましたが、Firefox が送信するヘッダーと完全に一致しています (Tamper Data によると)。

私は何を間違っていますか?

ここで私の完全なコードを調べることができます: http://pastebin.com/7JAZ9B4s

これは、取得する必要がある応答ヘッダーです。

Date[Tue, 10 Feb 2015 17:13:53 GMT]
Vary[Accept-Encoding]
Content-Encoding[gzip]
Cache-Control[max-age=0, no-cache]
Keep-Alive[timeout=5, max=100]
Connection[Keep-Alive]
Content-Type[text/html; charset=UTF-8]
Set-Cookie[TS014dfc77=017ccc203c29467c4d9b347fb56ea0e89a7182e52b9d7b4a1174efbf134768569a005c7c85; Path=/]
Transfer-Encoding[chunked]

そして、これは私が実際に取得する応答ヘッダーです:

Content-Length[5798]
Content-Type[text/html]
Pragma[no-cache]
Cache-Control[no-cache]
4

1 に答える 1