Web 如何使用WWW::Mechanize通过POST登录并接受cookies和浏览网站?

Web 如何使用WWW::Mechanize通过POST登录并接受cookies和浏览网站?,web,mechanize,Web,Mechanize,我已经阅读了关于WWW::Mechanize的各种帮助和文档页面,这似乎是我想要做的事情的答案,但是我一直找不到任何好的例子,并且在修改我自己的脚本时失败了 我已经成功地安装了WWW::Mechanize,并试图让它做我需要的事情 基本上,我正在尝试自动登录网站,然后转到特定页面 对我来说,正常的人的过程是: 1.转到一个“identity server”,它是一个https网站,提供一个简单的登录表单(带有一些隐藏值,但有一个用户名和密码以及一个提交按钮[和一个“保存我的登录”选项])。 2.

我已经阅读了关于WWW::Mechanize的各种帮助和文档页面,这似乎是我想要做的事情的答案,但是我一直找不到任何好的例子,并且在修改我自己的脚本时失败了

我已经成功地安装了WWW::Mechanize,并试图让它做我需要的事情

基本上,我正在尝试自动登录网站,然后转到特定页面

对我来说,正常的人的过程是: 1.转到一个“identity server”,它是一个https网站,提供一个简单的登录表单(带有一些隐藏值,但有一个用户名和密码以及一个提交按钮[和一个“保存我的登录”选项])。 2.成功登录后,“identity server”会自动将我作为经过身份验证的用户重定向到受密码保护的网站

我已经能够使用WWW::Mechanize查看登录页面的源代码,但我不知道如何将登录信息发布回服务器以登录并重定向

下面是我测试过的基本脚本。有人能帮我吗?或者告诉我一个资源,它可能有一个例子,让我帮助自己

此外,我认为这并不重要,但所涉及的网站基本上都基于Microsoft server和DNN

提前谢谢



脚本的问题是,在您提交表单后,您尝试登录的网站正在放置会话cookie,以便它可以验证您是已验证的用户,并且在重定向到您的私人登录页面后,您不需要重新验证自己

您编写的上述脚本会在您登录后将您重定向到安全私有页面,但发现会话cookie不再存在。因此,您实际上并没有享受登录用户带来的好处。基本上,您需要启用cookie保存

以下是您需要的python代码[使用您正在使用的相同Mechanize库],应该可以使用:

    import cookielib
    cj = cookielib.LWPCookieJar()
    br.set_cookiejar(cj) # Now cookie jar can store the loggedIn session cookie so you can access the private pages of a logged in user.
    #Extra code may not be required for you
    br.set_handle_redirect(True)
    br.set_handle_referer(True)
    br.set_handle_robots(False) #Some websites won't allow scripts by placing a robots.txt file in their root directory so you need to set robots to false. e.g. Google
    br.addheaders = [('User-agent', 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.1) Gecko/2008071615 Fedora/3.0.1-1.fc9 Firefox/3.0.1')] #Some website allows only browsers to view them. So this is a trick(hack) which will be required for accessing such websites.

现在,当您提交表单时,您应该能够在不注销的情况下重定向到安全登录页面。希望这能解决您的问题。

谢谢您,但我对Python不太清楚。我不知道这是什么,也不知道它如何适合Perl脚本。你能用WWW::Mechanize的Perl实现来解释这一点吗?
    import cookielib
    cj = cookielib.LWPCookieJar()
    br.set_cookiejar(cj) # Now cookie jar can store the loggedIn session cookie so you can access the private pages of a logged in user.
    #Extra code may not be required for you
    br.set_handle_redirect(True)
    br.set_handle_referer(True)
    br.set_handle_robots(False) #Some websites won't allow scripts by placing a robots.txt file in their root directory so you need to set robots to false. e.g. Google
    br.addheaders = [('User-agent', 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.1) Gecko/2008071615 Fedora/3.0.1-1.fc9 Firefox/3.0.1')] #Some website allows only browsers to view them. So this is a trick(hack) which will be required for accessing such websites.