gpt4 book ai didi

python - 带有 cookie 的 HTTP POST 和 GET 用于在 python 中进行身份验证

转载 作者:太空狗 更新时间:2023-10-29 17:37:15 24 4
gpt4 key购买 nike

我正在尝试创建一个 python 程序,该程序使用我的 ID 和密码登录到我大学的网站。这是登录的正式页面:https://webapp.pucrs.br/consulta/

您可能会注意到,这两个字段被命名为 pr1 和 pr2。该页面使用 POST 发送数据。此外,还有一个在页面加载时下载的 cookie,它是一个包含随机值的 JSESSIONID,据我所知,您必须在 POST 方法的 header 上返回以验证登录。

我写了下面的代码,但是 GET 方法的返回页面显示“ session 未初始化”,可能是因为 cookie 没有正确发送回来。

from urllib2 import Request, build_opener, HTTPCookieProcessor, HTTPHandler
import httplib, urllib, cookielib, Cookie, os

conn = httplib.HTTPConnection('webapp.pucrs.br')

#COOKIE FINDER
cj = cookielib.CookieJar()
opener = build_opener(HTTPCookieProcessor(cj),HTTPHandler())
req = Request('http://webapp.pucrs.br/consulta/principal.jsp')
f = opener.open(req)
html = f.read()
for cookie in cj:
c = cookie
#FIM COOKIE FINDER

params = urllib.urlencode ({'pr1':111049631, 'pr2':<pass>})
headers = {"Content-type":"text/html",
"Set-Cookie" : "JSESSIONID=70E78D6970373C07A81302C7CF800349"}
# I couldn't set the value automaticaly here, the cookie object can't be converted to string, so I change this value on every session to the new cookie's value. Any solutions?

conn.request ("POST", "/consulta/servlet/consulta.aluno.ValidaAluno",params, headers) # Validation page
resp = conn.getresponse()

temp = conn.request("GET","/consulta/servlet/consulta.aluno.Publicacoes") # desired content page
resp = conn.getresponse()

print resp.read()

我应该把这个 cookie 放在哪里,以便对登录进行身份验证?

最佳答案

我会尝试使用 requests 库。 documentation 非常好,代码最终比 urllib*

干净得多
$ pip install requests

使用自己处理 cookie 的 session(参见 Piotr 的评论),结果如下所示

import requests
url_0 = "http://webapp.pucrs.br/consulta/principal.jsp"
url = "https://webapp.pucrs.br/consulta/servlet/consulta.aluno.ValidaAluno"
data = {"pr1": "123456789", "pr2": "1234"}

s = requests.session()
s.get(url_0)
r = s.post(url, data)

它似乎工作正常,因为我收到关于 pr1 123456789 和“Sehna inválida”的“Usuario inexistente”通知以及您的用户编号。

关于python - 带有 cookie 的 HTTP POST 和 GET 用于在 python 中进行身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10247054/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com