![](/img/trans.png)
[英]How to receive and save an image in HTTP post request in Python Sockets?
[英]How to encrypt http request in Python Sockets
import socket
import ssl
host = 'postlm.com' #browsec addon v2.0.7
port = 443
def pp(a):
s = socket.socket()
s = ssl.wrap_socket(s)
s.connect((host, port))
s.send(a)
aaa=b''
for i in range(2):
aa=s.recv(10240)
if not aa:break
print('='*100)
if b'Connection established' in aa:
a=(a.replace(b'CONNECT ',b'GET https://'))
s.send(a)
continue
aaa+=aa
break
s.close()
return (aaa)
if __name__ == '__main__':
j=b'CONNECT www.wikipedia.org:443 HTTP/1.1\r\nHost: www.wikipedia.org\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:45.0) Gecko/20100101 Firefox/45.0\r\nAccept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\r\nAccept-Language: en-GB,en;q=0.5\r\nProxy-Authorization: Basic NWE5MTMxODE5ZjY4NjNlOWJkMDAwYjdiOkdXbHVpTm9JejMzMTRvZXNFemI3emNLTXU2aHZrc214\r\nAccept-Encoding: gzip, deflate\r\nProxy-Connection: keep-alive\r\n\r\n'
# j=b'GET http://example.com HTTP/1.1\r\nHost: example.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:45.0) Gecko/20100101 Firefox/45.0\r\nAccept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\r\nAccept-Language: en-GB,en;q=0.5\r\nAccept-Encoding: gzip, deflate\r\nConnection: keep-alive\r\n\r\n'
a=pp(j)
print(a)
輸出:
b'HTTP/1.1 400 Bad Request\r\nServer: nginx/1.13.6\r\nDate: Sun, 25 Mar 2018 12:20:29 GMT\r\nContent-Type: text/html\r\nContent-Length: 271\r\nConnection: close\r\n\r\n<html>\r\n<head><title>400 The plain HTTP request was sent to HTTPS port</title></head>\r\n<body bgcolor="white">\r\n<center><h1>400 Bad Request</h1></center>\r\n<center>The plain HTTP request was sent to HTTPS port</center>\r\n<hr><center>nginx/1.13.6</center>\r\n</body>\r\n</html>\r\n'
原始HTTP請求已發送到HTTPS端口
Browsec不兼容的插件這是帶有該插件的插件的較舊版本,我可以在整個系統中使用它,並將代理作為localhost:49736
對於我來說,尚不清楚您的代碼的意圖是什么,因為您僅轉儲了一些代碼而未記錄其功能。 但是我已經嘗試從這種類型中提取您可能正在嘗試做的事情以及問題所在。 給定代碼,我可以看到您正在執行以下操作:
GET https://
請求。 CONNECT的期望是它僅建立一個隧道,並且任何加密的流量(即您的https:// URL)都應在隧道內進行。 這意味着在發送下一個HTTP請求之前,您將需要在已經建立的加密(到代理)的基礎上再進行另一次加密(到目標站點) 。 但是您不這樣做,這就是為什么它(wikipedia.org)抱怨將純HTTP請求發送到HTTPS套接字。 我認為您無法使用Python進行這種雙重ssl包裝。 除此之外,您不應在HTTP(非代理)請求中放置https://
URL作為路徑,而應僅放置服務器上的路徑。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.