【发布时间】:2011-08-23 19:32:37
【问题描述】:
我一直在尝试(不成功,我可能会添加)使用 Python 和 urllib/urllib2 抓取使用 Microsoft 堆栈(ASP.NET、C#、IIS)创建的网站。我也在使用 cookielib 来管理 cookie。花了很长时间在 Chrome 中分析网站并检查标题后,我一直无法想出一个有效的登录解决方案。目前,为了让它在最基本的层面上工作,我已经使用所有适当的表单数据(甚至视图状态等)对编码的 URL 字符串进行硬编码。我也传递了有效的标题。
我目前收到的回复是:
29|pageRedirect||/?aspxerrorpath=/default.aspx|
我不确定如何解释上述内容。此外,我还广泛研究了用于处理登录字段的客户端代码。
工作原理如下:您输入您的用户名/密码并点击“登录”按钮。按下 Enter 键也模拟了此按钮按下。输入字段不在表单中。相反,在所述登录按钮上有一些 onClick 事件(其中大部分只是为了美观),但有一个问题处理验证。在将其发送到服务器端之前,它会进行一些基本检查。根据网络资源,它肯定似乎在使用 .NET AJAX。
正常登录本网站时,您请求域作为 POST,其中包含您的用户名和密码等表单数据。然后,会进行某种 URL 重写或重定向,将您带到 url.com/twitter 的内容页面。当尝试直接访问 url.com/twitter 时,它会将您重定向到主页。
请注意,我已决定将相关 URL 保留在外。我没有做任何恶意的事情,只是每隔合理的时间增量自动执行一次非常单调的检查(我熟悉富有同情心的屏幕抓取)。但是,如果将我的 StackOverflow 帐户与该帐户关联起来并不能使域所有者满意,那将是微不足道的。
我的问题是: 过去我能够成功登录并自动化服务,但这些服务都不是基于 .NET 的。有什么不同的事情我应该做的,或者我遗漏了什么?
【问题讨论】:
标签: asp.net python asp.net-ajax screen-scraping urllib2