使用googleappengine代码进行Web/Screen抓取可以在python解释器中工作,但不能在GAE中使用

2024-06-25 22:37:37 发布

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

我想用GAE做一些网页抓取。(无限校园学生信息门户,fyi)。此服务要求您登录才能进入网站。 我有一些在普通python中使用mechanize的代码。当我得知我不能在googleappengine中使用mechanize时,我最终使用了urllib2+ClientForm。我无法让它登录到服务器,所以在处理cookie几个小时后,我在一个普通的python解释器中运行了完全相同的代码,它成功了。我找到了日志文件,看到了大量关于在我的请求中剥离“host”头的消息。。。我被用户从一个不可信的源代码列表中删除了。在

很明显,我不能确定哪个系统需要登录。在

我该如何解决这个问题?我不能在提交给目标站点的假表单中指定任何其他内容。为什么这会是一个“安全漏洞”?在


Tags: 代码服务器信息网页门户网站cookieurllib2
1条回答
网友
1楼 · 发布于 2024-06-25 22:37:37

appengine不会剥离主机头:它会根据您请求的URI强制它成为一个准确的值。假设URI是绝对的,服务器甚至不允许考虑主机头,每RFC2616

  1. If Request-URI is an absoluteURI, the host is part of the Request-URI. Any Host header field value in the request MUST be ignored.

…所以我怀疑你是在误诊。尝试将请求定向到您控制的“虚拟”服务器(例如,您的另一个非常简单的app engine应用程序),这样您就可以查看来自GAE应用程序的请求的所有头和主体,以及它是如何来自“普通python解释器”的。你这样观察什么?在

相关问题 更多 >