使用机械化的Python自动登录(Python autologin using mechanize)

2019-11-02 22:10发布

固定! 与工作代码更新

我一直在进行有关努力使这个自动登录的东西为我工作。 请注意,我仍然在这一点上Python的新手。

以下是HTML代码,我发现,当我检查了相关表格:

<form action="/cgi-bin/netlogin.pl" method="post" name="netlogin">
    <tr>
      <td><div align="right">Intranet userid:</div></td>
      <td><input type="text" size="20" maxlength="50" name="uid" id="uid" class="formField" /></td>
    </tr>
    <tr>
      <td><div align="right">Wachtwoord:</div></td>
      <td><input type="password" size="20" maxlength="50" name="pwd29296" class="formField" autocomplete="off"/></td>
    </tr>
    <tr>
      <td>&nbsp;</td>
      <td><input type="submit" name="submit" value="Login" /></td>
    </tr>
</form> 

我开始了与获取门户html内容找到合适的“pwdXXXX”变量。 正如每次刷新时,ID为密码表单变化。 据我了解这一点,正则表达式的作品。

试图通过密码时,它不会出问题。 这让我想起我听错了与形式的钥匙? 我绝对没有线索。 我使用的urllib2的方法,而不是使用机械化也试过。 没有结果要么。

工作代码:

url = "https://netlogin.kuleuven.be/cgi-bin/wayf2.pl?inst=kuleuven&lang=nl&submit=Ga+verder+%2F+Continue"

br = mechanize.Browser()
br.set_handle_robots(False)
br.open(url)
br.select_form(name = "netlogin")
form = str(br.form)

uID = "uid"
dynamic_pwID = re.findall(r"(pwd\d+)", form) #pwID changes when page is refreshed
pwID = dynamic_pwID[0]

br[uID] = "xxxx"
br[pwID]= "xxxx"

res = br.submit()

Answer 1:

你的问题的一部分很可能是因为你关闭你阅读的页面插座urllib与机械化会议将有不同的 ID,因此需要一个新的令牌。

您将需要保持一个连接打开的会话的持续时间。 所以,我认为你需要解析回复的内容br.read()找到你的价值pwID

评论从OP:

我离开了urllib的一部分,它的工作现在。 我虽然用STR(br.form)代替br.read()。



文章来源: Python autologin using mechanize