使用http.client登录网站

时间:2017-07-09 23:16:59

标签: python python-3.x python-requests httpconnection http.client

我正在尝试使用以下代码使用Python中的http.client登录网站:

void DoubleString(char** str, size_t* cap)

我知道一个常见的建议就是使用Requests库,我尝试过这个,但我特别想知道如何在不使用请求的情况下执行此操作。

我正在寻找的行为可以使用以下代码复制,这些代码使用请求成功登录到站点:

import urllib.parse
import http.client
payload = urllib.parse.urlencode({"username": "USERNAME-HERE",
                                 "password": "PASSWORD-HERE",
                                 "redirect": "index.php",
                                 "sid": "",
                                 "login": "Login"})
conn = http.client.HTTPConnection("osu.ppy.sh:80")
conn.request("POST", "/forum/ucp.php?mode=login", payload)
response = conn.getresponse()
data = response.read()

# print the HTML after the request
print(bytes(str(data), "utf-8").decode("unicode_escape"))

在我看来,http.client代码不是“传递”有效载荷,而请求代码是。

任何见解?我忽略了什么吗?

编辑:添加import requests payload = {"username": "USERNAME-HERE", "password": "PASSWORD-HERE", "redirect": "index.php", "sid": "", "login": "Login"} p = requests.Session().post('https://osu.ppy.sh/forum/ucp.php?mode=login', payload) # print the HTML after the request print(p.text) 会提供以下输出:

conn.set_debuglevel(1)

1 个答案:

答案 0 :(得分:3)

由于您正在编写有效负载,因此必须发送标头:application/x-www-form-urlencoded

相关问题