用pythonquests实现挑战/响应方案

2024-09-28 19:07:50 发布

您现在位置:Python中文网/ 问答频道 /正文

我开始学习如何使用python请求模块。为了练习,我尝试管理一个挑战/响应问题:我想访问http://lema.rae.es/drae/srv/search?val=hacer上的数据

使用Firefox的“篡改数据”插件,我检查了必要的HTTP请求:

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

我复制了Firefox在两个HTTP请求中发送的确切头部,并在Python中实现了JavaScript“challenge”函数。然后我要做的是:

^{pr2}$

不幸的是,服务器不会以预期的方式响应。我检查了我通过“r”发送的所有邮件头。请求.headers“而且它们与firefox发送的邮件头完全一致(根据篡改数据)

我做错什么了?在

你可以在这里检查我的完整代码: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]

Tags: 数据nohttpcachesearchesvalcontent
1条回答
网友
1楼 · 发布于 2024-09-28 19:07:50

我找到了我的代码不起作用的原因:

服务器期望POSTDATA与条目作为表单的输入元素的显示顺序完全相同。在我的代码中,输入元素的值存储在python dict中,但是这种数据类型没有保留值声明的顺序!在

不过,ruby脚本(在注释中提到)确实有效,因为ruby dict数据类型似乎保留了声明的顺序!在

此外,在python中重新实现javascript challenge()函数是完全不必要的,因为服务器将乐于反复接受任何响应字符串(过去有效的)!在

相关问题 更多 >