2016-06-29 9 views
2

私はPythonスクリプトを使用してウェブサイトにログインしようとしています。受信したCookieを保存してから、同じCookieを使用してWebサイトのメンバー専用部分にアクセスします。私はこのトピックに関するいくつかのポストと答えを読んだが、答えのどれも私のために働いていない。Pythonリクエストを使用してWebサイトにログインし、Cookieを保存し、Webサイト上の別のページにアクセスする方法?

私がアクセスしようとしているウェブサイトのログインページのHTMLコードです。

<form action="/login?task=user.login" method="post"> 
    <fieldset> 
     <table border="0" cellspacing="0" cellpadding="0"> 
     <tbody> 
                 <tr> 
      <td width="70" nowrap="">Username&nbsp;&nbsp;</td> 
      <td width="260"><input type="text" name="username" id="username" value="" class="validate-username" size="25"/></td> 
        </tr> 
                       <tr> 
      <td width="70" nowrap="">Password&nbsp;&nbsp;</td> 
      <td width="260"><input type="password" name="password" id="password" value="" class="validate-password" size="25"/></td> 
     </tr> 
                 <tr> 
      <td colspan="2"><label style="float: left;width: 70%;" for="modlgn_remember">Remember Me</label> 
      <input style="float: right;width: 20%;"id="modlgn_remember" type="checkbox" name="remember" class="inputbox" value="yes"/></td> 
     </tr> 
     <tr> 
      <td colspan="2" width="100%"> <a href="/reset-password"> Forgot your password?</a></td> 
     </tr> 
     <tr> 
      <td colspan="2" width="100%"> <a href="/username-reminder">Forgot your username?</a></td> 
     </tr> 
     <tr> 
      <td colspan="2"><button type="submit" class="button cta">Log in</button></td> 
<!--       <td colspan="1"><a href="/--><!--">Register Now</a></td>--> 
     </tr> 
     </tbody> 
     </table> 

     <input type="hidden" name="return" 
       value="aHR0cHM6Ly9maWYuY29tLw=="/> 
     <input type="hidden" name="3295f23066f7c6ab53c290c6c022cc4b" value="1" />     </fieldset> 
</form> 

これは、私がログインを試みるために使用している自分のコードです。

from requests import session 

payload = { 
    'username': 'MY_USERNAME', 
    'password': 'MY_PASSWORD' 
} 

s = session() 
s.post('https://fif.com/login?task=user.login', data=payload) 

response = s.get('https://fif.com/tools/capacity') 

私が読んだすべてから、これはうまくいくはずですが、そうではありません。私は2日間この問題に苦しんでいたので、あなたが答えを知っていれば、私は解決策を愛するだろう。

参考のために、ここで私は答えを期待して見てきた他のすべてのStackOverflowの記事は以下のとおりです。

  1. Python Requests and Persistent Sessions
  2. Logging into a site using Python Reqeusts
  3. Login to website using python
  4. How to “log in” to a website using Python's Requests module?
  5. Python: Requests Session Login Cookies
  6. How to use Python to login to a webpage and retrieve cookies for later usage?
  7. cUrl Login then cUrl Download

答えて

1

あなたは必要なすべてのデータを掲載しなければならない、あなたが必要な値を取得するには、ログインページを解析するBS4を使用することができます:あなたが要求を行う場合

from requests import session 
from bs4 import BeautifulSoup 

data = { 
    'username': 'MY_USERNAME', 
    'password': 'MY_PASSWORD' 
} 

head = {"User-Agent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36"} 
with session() as s: 
    soup = BeautifulSoup(s.get("https://fif.com/login").content) 
    form_data = soup.select("form[action^=/login?task] input") 
    data.update({inp["name"]: inp["value"] for inp in form_data if inp["name"] not in data}) 
    s.post('https://fif.com/login?task=user.login', data=data, headers=head) 
    resp = s.get('https://fif.com/tools/capacity') 

をクロムツールや火かき棒を見ると、フォームデータは次のようになります。

username:foo 
password:bar 
return:aW5kZXgucGhwP29wdGlvbj1jb21fdXNlcnMmdmlldz1wcm9maWxl 
d68a2b40daf7b6c8eaa3a2f652f7ee62:1 
+0

明確にするために、 - 味方、ただ一つ、正しい?そして、「あなたはすべての必要なデータを投稿するべきですか?」という意味はどうですか?私は何が欠けていますか? – Jacob

+0

@Jacob、1つしかありません –

+0

「必要なすべてのデータを投稿する必要があります」とはどういう意味ですか?私は何が欠けていますか? @Padraic – Jacob

関連する問題