Pythonを使用して、この page にログインしようとしています。
これで説明されている手順を使用してみました 他のスタックオーバーフローの投稿 、次のコードを取得しました:
import urllib, urllib2, cookielib
username = 'username'
password = 'password'
cj = cookielib.CookieJar()
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
login_data = urllib.urlencode({'username' : username, 'j_password' : password})
opener.open('http://friends.cisv.org/index.cfm', login_data)
resp = opener.open('http://friends.cisv.org/index.cfm?fuseaction=activities.list')
print resp.read()
しかし、それは私に次の出力を与えました:
<SCRIPT LANGUAGE="JavaScript">
alert('Sorry. You need to log back in to continue. You will be returned to the home page when you click on OK.');
document.location.href='index.cfm';
</SCRIPT>
何が悪いのですか?
すばらしい requests
モジュールを使用することをお勧めします。
以下のコードを使用すると、サイトにログインし、セッションの間Cookieを保持できます。
import requests
import sys
EMAIL = ''
PASSWORD = ''
URL = 'http://friends.cisv.org'
def main():
# Start a session so we can have persistant cookies
session = requests.session(config={'verbose': sys.stderr})
# This is the form data that the page sends when logging in
login_data = {
'loginemail': EMAIL,
'loginpswd': PASSWORD,
'submit': 'login',
}
# Authenticate
r = session.post(URL, data=login_data)
# Try accessing a page that requires you to be logged in
r = session.get('http://friends.cisv.org/index.cfm?fuseaction=user.fullprofile')
if __name__ == '__main__':
main()
「ログイン」という用語は、あいにくあいまいです。ここに与えられたコードは明らかにHTTP基本認証を使用してログインしようとしました。このサイトでは、ユーザー名とパスワードを何らかのPOSTフォーム(ほとんどのWebベースのログインフォームが機能する方法)で送信することを望んでいる)と思われます。この場合、適切なPOSTリクエストを送信し、今後のリクエストのために返信されたCookieを保持する必要があります。残念ながら、これが何であるかはわかりません。サイトによって異なります。通常、ユーザーがどのようにログインするかを理解し、そのパターンに従うようにする必要があります。