0

mechanize for python を使用して Web サイトにログオンしようとしています。ただし、フォームで正しい資格情報が提示された場合、ログインに失敗します。

機械化チュートリアルに従って私がやっていることは次のとおりです。

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 ページで失敗したかのように表示されます。手動でログインでき、すべてがデバッガーを通過したため、何が間違っているのかわかりません。私はいくつかの掘り下げを行い、javascript のフォーム HTML をチェックしましたが、フォームには何も添付されていないようです。

フォームは次のとおりです。

<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>&nbsp;&nbsp;<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>

同様の質問がいくつかあったことは知っていますが、検索しても明確な回答が得られなかったようです。何が起こっているのか、誰かが光を当てることができますか?

4

1 に答える 1

0

コメントとして追加したいのですが、できません: いくつかの非表示の入力、特に文字列が CSRF 攻撃を防ぐための検証として機能するかどうかは疑問です。非表示のフィールドをメール/パスワードと一緒に送信してみましたか? それはあなたを助けるかもしれません。

于 2013-06-26T03:35:40.127 に答える