1

mechanize を使用して、次のフォームでサイトにログインしています。

<form id="loginForm">
         <div class="signinTitle" >
            <span class="regTips" id="logTips"></span>
        </div>
         <ul class="inputBox">
                <li class="loginname">
                    <label>username/email</label>
                    <input id="nameInput" type="text" name="loginname" maxlength="30" value="">
                </li>
                <li class="password">
                    <label>password</label>
                    <input id="pwdInput" type="password" name="password" maxlength="16" value="">

                </li>
                <li id="chechbox">
                    <p class="tip">
                        <input name="remember" type="checkbox" checked="checked"/>
                        <span>remember </span>
                        <span class="forgetPwd"><a href="http://passport.infzm.com/passport/resetPassWord" >forget password</a></span>
                    </p>
                </li>
                <li class="submit clearfix">
                    <input type="submit" id="submitbutton" title="submit" value="login"></input>
                </li>
            </ul>
    </form>

ログインに使用するコードは次のとおりです

browser = mechanize.Browser()
browser.open(url)
browser.select_form(nr=1)
browser['loginname']=username
browser['password']=password
browser.submit()
browser.read()

しかし、read() はログイン ページと同じ html を返します。ここで何が問題なのですか。

4

1 に答える 1

1

images.infzm.com/js/com/infzm/passport/passport.js?v=4 の JavaScript は、フォームが POST 経由で に送信されることを示してい/passport/loginます。それを機能させるには、mechanize でいくつかのトリックを行う必要があります。基本的に、フォームのアクションとメソッドを変更する方法を見つける必要があります (これが可能だったかどうかは思い出せません)。または、フォームを使用せずに自分で投稿する (同様に簡単です) 必要があります。次に、ログインが成功したときに JavaScript がリダイレクトするhttp://www.infzm.com/を直接参照します。

于 2013-07-22T03:32:55.453 に答える