2016-07-23 9 views
2

要求モジュールからPOSTを使用してGithubにログインするにはどうすればよいですか?私は次のコードを使用してのGitHubにログインしようとしている

url = 'https://github.com/login' 

headers = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36', 
      'login':'username', 
      'password':'password', 
      'authenticity_token':'Token that keeps changing', 
      'commit':'Sign in', 
      'utf8':'%E2%9C%93' 
} 

res = requests.post(url) 
print(res.text) 

は今、res.textは、ログインページのコードを出力します。トークンが絶え間なく変化し続けている可能性があると私は理解しています。私もhttps://github.com/sessionにURLを設定しようとしましたが、どちらも動作しません。

誰でも私にトークンを生成する方法を教えてもらえますか?私は、APIを使用せずにログインする方法を探しています。私はanother questionに私がログインすることができなかったと言いました。 1つのコメントは、私はそれを正しくやっていないと言って、Github APIの助けを借りずにリクエストモジュールを使用するだけでログインすることができます。

ME:

だから、私はFacebookやGithubのは、POSTメソッドを使用してにログインすることができますか?私はそれを試して、それは動作しませんでした。

USER:

まあ、おそらくあなたがやった何か間違っ

誰もが私が間違って何をしたかを教えていただけますか?

s = requests.Session() 
headers = {Same as above} 

s.put('https://github.com/session', headers=headers)  
r = s.get('https://github.com/') 

print(r.text) 

が、私はまだログインページを乗り越えることができません。

セッションを使用する方法について提案した後、私は自分のコードを更新しました。

+0

なぜAPIを使用していませんか? https://developer.github.com/v3/#authentication –

+0

APIなしでやりたいGitHubにログインするだけではありません。私はWebサイト(httpbinのようなWebサイト以外のもの)で何かをするリクエストモジュールのpostメソッドを使うことができる、実用的なものに満足しています。 –

答えて

2

あなたがリダイレクトされ、コードがあなたのクッキーを返送しないので、ログインページに戻ると思います。セッションはできません。

あなたはrequestsがそれを提供し、セッションの永続性を探しています:

セッションは、Sessionオブジェクトを使用すると、リクエスト間で一定の パラメータを保持することを可能にするオブジェクト。また、セッションインスタンスからのすべての リクエストにCookieを保持し、urllib3の 接続プーリングを使用します。したがって、同一の ホストに複数の要求を行っている場合は、基礎となるTCP接続が再利用され、結果的にパフォーマンスが大幅に向上します(HTTP永続性 接続を参照)。

s = requests.Session() 

s.get('http://httpbin.org/cookies/set/sessioncookie/123456789') 
r = s.get('http://httpbin.org/cookies') 

print(r.text) 
# '{"cookies": {"sessioncookie": "123456789"}}' 

http://docs.python-requests.org/en/master/user/advanced/

+0

私はまだログインページを通過できません。 –

0

また、一般的なGitのタスクを実行するPyGitHub APIを使用して試すことができます。 下記のリンクを確認してください: https://github.com/PyGithub/PyGithub

関連する問題