2017-05-18 7 views
0

私はこのウェブサイトにログインしようとしています:https://portals.broadinstitute.org/cmap/index.jspこの回答からのコードを使用してください:https://stackoverflow.com/a/22547541/651779。これは正しく動作するために使用されました。しかし、これを実行すると、私は許可が拒否されます。ユーザー名とパスワードは正しいです。これは、(で満たされたユーザー名とパスワードを使用して)URL与えウェブサイトにログインできませんでした

login_url = 'http://www.broadinstitute.org/cmap/j_security_check' 

login_values = urllib.parse.urlencode({'j_username': user, 
             'j_password': pwd, 
             'submit': 'sign in'}) 
print(login_url+'?'+login_values) 

コードの下

http://www.broadinstitute.org/cmap/j_security_check?j_username=<username>&j_password=<password>&submit=sign+in 

私は私のブラウザでは正しくで私をログに記録することを貼り付けるので、私ユーザー名とパスワードがまだ良いことを知っている。

payload_submit_signature = bytes(login_values, 'ascii') 

cj = http.cookiejar.CookieJar() 
opener = urllib.request.build_opener(
    urllib.request.HTTPRedirectHandler(), 
    urllib.request.HTTPHandler(debuglevel=0), 
    urllib.request.HTTPSHandler(debuglevel=0), 
    urllib.request.HTTPCookieProcessor(cj)) 

opener.open(submit_signature_url) #First call to capture the JSESSIONID 
resp = opener.open(login_url, payload_submit_signature) 
for cookie in cj: 
    print (cookie.name, cookie.value, cookie.domain, cookie.expires, cookie.secure) #etc etc 

以前のスタック回答では、最初にクッキーを設定する必要があります。上記の印刷は、

JSESSIONID B2CFD19CBB9105EC2DC4D75DD7C3C0C9 portals.broadinstitute.org None True 

となります。

print(resp.read()) 

誤ったユーザーパスワードの組み合わせを入力すると、同じhmtlページが表示されます。どのように正しく送信されないのでしょうか?

+0

は、なぜあなたは 'requests'を使用していませんか? –

+0

@tmadam requests.Session()が p = s.post( 'http://www.broadinstitute.org/ cmap/j_security_check '、data = payload) print(p.text) も認証エラー –

答えて

1

requestsを使用して、このコードは私が

login = 'https://portals.broadinstitute.org/cmap/j_security_check' 
index = 'https://portals.broadinstitute.org/cmap/index.jsp' 
username = 'my username' 
password = 'my password' 
data = { 'j_username':username, 'j_password':password, 'submit':'sign+in' } 

ses = requests.Session() 
ses.get(index) # you need this to get cookies # 
post = ses.post(login, data=data) 

print(ses.cookies.get_dict()) 
print(post.url) 
print('sign out' in post.content) 

結果のために働く:

{'JSESSIONID': 'A86EDB10DB2BC063EFE7A528F5E88A77'} 
https://portals.broadinstitute.org/cmap/index.jsp 
True 
関連する問題