3
私は、次のコードを使用してPythonでurllib
を使用してWebサイトにログインしようとしています:ログインurllibは使用して代わりのhttp.client
import urllib.parse
import urllib.request
headers = {"Content-type": "application/x-www-form-urlencoded"}
payload = urllib.parse.urlencode({"username": "USERNAME-HERE",
"password": "PASSWORD-HERE",
"redirect": "index.php",
"sid": "",
"login": "Login"}).encode("utf-8")
request = urllib.request.Request("https://osu.ppy.sh/forum/ucp.php?mode=login", payload, headers)
response = urllib.request.urlopen(request)
data = response.read()
# print the HTML after the request
print(bytes(str(data), "utf-8").decode("unicode_escape"))
私は一般的な提案は、単に要求ライブラリを使用することであることを知っています私はこれを試しましたが、特にRequestsを使わないでこれを行う方法を知りたいと思っています。
私が探しています動作が正常にhttp.client
を使用してサイトにログインし、次のコードで複製することができます。
import urllib.parse
import http.client
headers = {"Content-type": "application/x-www-form-urlencoded"}
payload = urllib.parse.urlencode({"username": "USERNAME-HERE",
"password": "PASSWORD-HERE",
"redirect": "index.php",
"sid": "",
"login": "Login"})
conn = http.client.HTTPSConnection("osu.ppy.sh")
conn.request("POST", "/forum/ucp.php?mode=login", payload, headers)
response = conn.getresponse()
data = response.read()
# print the HTML after the request
print(bytes(str(data), "utf-8").decode("unicode_escape"))
urllib
コードはペイロードを「提供」されていないように私には思えます、コードはhttp.client
です。
正しいパスワードとユーザー名がサーバーからの応答を保証しているので、ペイロードを「配信」できるようですが、正しいユーザー名とパスワードを指定しても効果はないようです。
洞察?私は何か見落としていますか?
私は実行するためにあなたのコードを試してみましたが、私は(あなたが間違ったパスワードを指定している...)期待される結果を得ます。ペイロードが配信されたことを意味します。あなたが正しいユーザ名/パスワードを入力した場合、あなたはどのような反応を得ますか? – Qeek
@Qeek正しいユーザー名とパスワードが与えられても、私がログインしていない(「Welcome、!」の代わりに「ようこそ!ゲスト!初期ペイロード配信後にログインが維持されない可能性がありますか?クッキーを使用する必要がありますか? –