【问题标题】:Python: MechanizePython:机械化
【发布时间】:2013-01-03 14:34:19
【问题描述】:

我的问题很简短,我正在使用机械化模块登录网站,但是如何找出用户是否成功登录。例如。

br = open("http://xyz.com/signin")
br['login'] = xxxx
br['password'] = xxx
result = br.submit().read()
f  = open('s.html', 'w')
f.write(result)
f.close

现在如果登录信息为真,s.html 将包含下一个重定向页面,如果信息为假,它将包含错误页面。现在如何找出用户的用户名和密码是否为真......提前谢谢

【问题讨论】:

  • 为什么要将响应保存在文件中?您可以在读取状态代码后测试响应变量
  • 你能不能解释的更深入一点,因为我是第一次尝试
  • 您似乎正在打开文件,您应该使用 br.open,详细说明如下:wwwsearch.sourceforge.net/mechanize
  • 基本上删除你已有的,然后从我刚刚给你的链接重新开始。
  • 感谢您对我的帮助....但是使用此登录方法,我可以通过编写算法来破解用户名已知的某人的密码。它传递了可能的密码组合,以及我如何加快这个过程

标签: python django mechanize


【解决方案1】:

您必须查看为您提供的页面内容。

如果有字符串

登录失败

或者类似的,你就知道它失败了。

【讨论】:

  • 但是如果我有成千上万个这样的登录要做,那么这将成为浪费时间的方法....还有为什么我不能登录到 Facebook,当我写 br = open("facebook.com/") 它给出了一些错误
  • 您别无选择,只能检查返回的页面以查看登录是否有效。你认为你还能怎么做?
  • 因为facebook的登录是在它的主页上,所以我写它的方式和facebook.com一样
  • 这个错误无疑与facebook正在使用的robots.txt有关。这可以用 br.set_handle_robots(False) 修复
【解决方案2】:

如果登录成功,它通常会重定向到不同的页面,否则它会留在同一页面并出现错误消息

你可以使用这样的东西

if br.geturl()==("https://address of the page after login"):
        print "SUCCESS"

【讨论】:

    【解决方案3】:

    您可以使用br.geturl() 并检查它是否是您登录时的URL。假设它是xyz.com/welcome

    【讨论】:

      猜你喜欢
      • 2018-04-21
      • 1970-01-01
      • 1970-01-01
      • 2011-08-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-08
      • 2013-06-09
      相关资源
      最近更新 更多