Privnote套接字服务器不理解请求

时间:2020-04-25 12:33:45

标签: python-3.x sockets websocket

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

s.connect(("privnote.com", 80))
#s = ssl.wrap_socket(s, keyfile=None, certfile=None, server_side=False, cert_reqs=ssl.CERT_NONE, ssl_version=ssl.PROTOCOL_SSLv23)

def claim_note(note_url):
    s.sendall(b'DELETE /'+note_url.encode()+b'HTTP/1.1\r\nX-Requested-With: XMLHttpRequest\r\nHost: privnote.com\r\n')
    print(s.recv(4096))

这是我的代码,现在让我首先开始说,除此以外,我还尝试了许多其他事情。我尝试使用https端口和http端口443、80。我已经注释掉了用ssl包装套接字的语句,并且未对其添加注释。全部具有相同的结果。 api绝对不返回任何内容,或者api告诉我请求不能被服务器理解。我当时正在看一个GitHub存储库,只使用了一个标头,这是因为它用于x请求的Ajax调用。我尝试添加用户代理内容类型,现在只使用host和x请求。这是一个DELETE请求,URL是链接后的前8个字符。我还尝试在末尾添加\ r \ n \ r \ n,甚至尝试内容长度。我不知道该怎么办我想知道为什么服务器这么说。

1 个答案:

答案 0 :(得分:1)

您的代码有多个问题。如果您实际打印出了您要发送的请求,它将看起来像这样:

b'DELETE /node_urlHTTP/1.1\r\nX-Requested-With: XMLHttpRequest\r\nHost: privnote.com\r\n'

此行有两个问题:/node_urlHTTP/1.1之间缺少空格,而末尾的\r\n末尾als标题结尾标记也丢失了。解决这些问题后,您将获得成功的响应-302重定向到HTTPS版本:

b'HTTP/1.1 302 Found\r\nDate:...\r\nLocation: https://privnote.com/node_url ...

当使用HTTPS和有效的node_url重复请求时(使用无效的node_url会收到错误消息,表明DELETE不是允许的方法):

s.connect(("privnote.com", 443))
s = ssl.wrap_socket(s)

...
b'HTTP/1.1 200 OK\r\n ...
相关问题