我正在尝试使用mechanize for python登录一个网站;但是,如果在表单中显示正确的凭据,则无法登录。
以下是我在机械化教程之后所做的事情:
def logon(self):
baseurl = "https://www.website.com/login"
br = mechanize.Browser(factory=mechanize.RobustFactory())
br.open(baseurl)
br.select_form(nr=0)
br.form["username"] = self.username
br.form["password"] = self.password
response = br.submit()
print response.geturl()
那应该带我到website.com/dashboard,但是它在website.com/login页面上说它好像失败了。我可以手动登录,一切都通过调试器,所以我不知道我做错了什么。我做了一些挖掘工作,并通过表单HTML检查了javascript,并且表单似乎没有附加到它。
以下是表格:
<form method="post" class="login-form">
<fieldset>
<div class="row form-section">
<label for="email">Email Address</label>
<span class="input-text"><input class="required-email" type="text" id="email" value="" name="username" /><span class="required">Required Info</span></span>
<!--<input type="text" id="email" name="username" placeholder="Enter Email Address" class="text" aria-required="true" required="required" style='float:right;' size="30" value="" /><p> -->
</div>
<div class="row form-section">
<label for="pass">Password</label>
<span class="input-text"><input class="required-text" type="password" id="pass" value="" name="password" /><span class="required">Required Info</span></span>
<!--<input type="password" placeholder="Enter Password" class="text" size="30" autocomplete="off" value="" id="password" name="password" style='float:right;' aria-required="true" required="required" />-->
</div>
<div class="row row-btn">
<input type="submit" value="Log in" />
<span><a href="/sign-up" class="sign-in">Don't have an account?</a><br><br><a href="/component/com_oms/task,reset-password/view,user/" class="sign-in">Forgot your password?</a> <a href="/resend-activation" class="sign-in">Didn't get your activation email?</a></span>
</div>
</fieldset>
<input type="hidden" value="com_oms" name="option">
<input type="hidden" value="login" name="task">
<input type="hidden" name="return" value="">
<input type="hidden" name="9402951e32acb8d73d4a6972ae540c63" value="1" />
</form>
我知道有一些类似的问题,但我的搜索似乎没有任何明确的答案。任何人都可以了解正在发生的事情吗?
答案 0 :(得分:0)
想添加评论但无法: 我怀疑是否有少数隐藏的输入特别是字符串用作防止CSRF攻击的验证。您是否尝试使用电子邮件/密码提交隐藏字段?这可能会帮助你。