前提・実現したいこと
Python3のsocketライブラリを使ってhttpリクエストをしたいです(requestライブラリを使えば簡単というのは知っていますが、こっちでもやってみようということで)。
発生している問題・エラーメッセージ
"400 Bad Request"のhtmlが返ってきます。
該当のソースコード
Python3
1import socket 2 3mes='GET / HTTP1.1\r\n' 4mes+='Host: "qiita.com\r\n' 5mes+='Connection: close\r\n' 6mes+='\r\n' 7 8s=socket.socket(socket.AF_INET,socket.SOCK_STREAM) 9s.connect(("qiita.com",80)) 10 11s.send(mes.encode("utf-8")) 12 13received=s.recv(1024).decode("utf-8") 14 15s.shutdown(socket.SHUT_RDWR) 16s.close() 17 18print(received)
試したこと
・yahoo.co.jpで同じことをすると正しいhtmlが返ってきます。
・(これ以下はもしかすると全く見当違いのことを喋っているのかもしれませんが...)
teratail.comで同じことをすると"400 Bad Request"が返ってくるのですが、レスポンスヘッダの一つに
Referrer-Policy: no-referrer
というのがありました。httpsのポートにリクエストを送ればいいのか?と考え、ポート番号を443にしてみたうえで、 https://teratail.com/questions/44137 を参考にさせて頂き、URLの先頭にhttps://をつけてみると今度は
Traceback (most recent call last): File "hoge.py", line 9, in <module> s.connect(("https://qiita.com",443)) socket.gaierror: [Errno 11001] getaddrinfo failed
というエラーが飛んできます。
宜しくお願いします。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2019/01/05 11:51