我试图登录到这个网站:https://portals.broadinstitute.org/cmap/index.jsp使用代码从一段时间以前从这个答案:https://stackoverflow.com/a/22547541/651779。它以前工作正常。然而,当运行它现在我得到一个授权被拒绝。用户名和密码正确。你知道吗
代码下方:
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)
这将提供url(填写用户名和密码):
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
根据前面的堆栈应答,需要首先设置cookie。上面的指纹显示
JSESSIONID B2CFD19CBB9105EC2DC4D75DD7C3C0C9 portals.broadinstitute.org None True
所以这似乎奏效了。你知道吗
print(resp.read())
这与您在填写错误的用户密码组合时得到的hmtl页面相同。为什么不能正确发送?你知道吗
使用
requests
,这段代码适合我结果:
相关问题 更多 >
编程相关推荐