如何使用python登录需要服务器在第一次请求时响应会话id的页面?
我正在写一个脚本来登录某个网页。为此,我使用request和request.session模块。在第一个带有登录参数的请求时,服务器会响应会话id。如何设置会话id以便进一步登录到同一页面如何使用python登录需要服务器在第一次请求时响应会话id的页面?,python,session,request,session-cookies,Python,Session,Request,Session Cookies,我正在写一个脚本来登录某个网页。为此,我使用request和request.session模块。在第一个带有登录参数的请求时,服务器会响应会话id。如何设置会话id以便进一步登录到同一页面 url = "some url of login page" payload = {'username': 'p05989', 'password': '123456'} with requests.session() as s: s.post(url1, data=payload) sess
url = "some url of login page"
payload = {'username': 'p05989', 'password': '123456'}
with requests.session() as s:
s.post(url1, data=payload)
sessionid = s.cookies.get('SESSIONID')
print(sessionid)
r = requests.get(url,data=payload)
print(r.text)
在上述代码中,
服务器在第一个请求时响应sessionid。如何在第二个请求时使用该sessionid?您已经在使用
请求。session()
;它为您处理cookies,前提是您继续使用会话处理所有请求:
url = "some url of login page"
payload = {'username': 'p05989', 'password': '123456'}
with requests.session() as s:
# fetch the login page
s.get(url)
# post to the login form
r = s.post(url1, data=payload)
print(r.text)
在发布到登录表单之前,您可能首先需要使用GET
来设置会话id
SESSIONID
cookie对您来说是透明的。@Heisenberg:不,只要您继续使用s
来处理请求,您就不必担心cookie。@Martijn Pieters:会话对象的get和post方法属于表单方法吗?@Heisenberg:浏览器解释HTML以查找表单元素,然后,当您提交表单时,浏览器会检查
标记以查看应该发生什么,并按照说明使用GET
或POST
。request.Session().post()
和request.Session().get()
方法为您执行这样的post
或get
请求,就像request.post()
和request.get()
一样,但是有任何Cookie。谢谢你的回复。但是我不明白我的登录表单使用post方法进行提交。但是你在答案中写了s.get()方法。它会工作吗?@Heisenberg:第一个.get()
只是获取带有设置Cookie头的表单。data=payload
参数存在错误;它源自您使用requests.get(url,data=payload)
的问题代码。
import requests
import webbrowser
url = "https://www.invezta.com/investorsignup.aspx"
payload = {'login-email': 'email',
'login-pwd': 'password'}
with requests.session() as s:
# fetch the login page
s.get(url)
url1='https://www.invezta.com/Pdf_creator.aspx?User_ID='
# post to the login form
r = s.post(url1, data=payload)
print(r.text)