Javascript (Web)套接字连接发送头而不是字符串

Javascript (Web)套接字连接发送头而不是字符串,javascript,python,sockets,google-chrome-extension,websocket,Javascript,Python,Sockets,Google Chrome Extension,Websocket,我正在研制一种通过Chrome扩展的刮刀。它获取页面上的所有HTML,并将其发送到python代码,该代码过滤并保存数据。我这样做的原因是因为该网站有Distil网络和一个“传统”的刮板被阻止 我成功地连接了这两个代码,但每当我尝试向python服务器发送“Test”时,它只输出浏览器的标题 b'GET/HTTP/1.1 主机:本地主机:18364 连接:升级 Pragma:没有缓存 缓存控制:没有缓存 用户代理:Mozilla/5.0(Windows NT 10.0;Win64;x64)App

我正在研制一种通过Chrome扩展的刮刀。它获取页面上的所有HTML,并将其发送到python代码,该代码过滤并保存数据。我这样做的原因是因为该网站有Distil网络和一个“传统”的刮板被阻止

我成功地连接了这两个代码,但每当我尝试向python服务器发送“Test”时,它只输出浏览器的标题

b'GET/HTTP/1.1 主机:本地主机:18364 连接:升级 Pragma:没有缓存 缓存控制:没有缓存 用户代理:Mozilla/5.0(Windows NT 10.0;Win64;x64)AppleWebKit/537.36(KHTML,类似Gecko)Chrome/78.0.3904.108 Safari/537.36 升级:websocket 产地:铬-extension://ocplnbpkkcpcomkjioockgnlohhkdeic Sec WebSocket版本:13 接受编码:gzip,deflate,br 接受语言:nl nl,nl;q=0.9,在美国;q=0.8,en;q=0.7 Sec WebSocket密钥:SDC7zPgHK/eV+QRSJy0DZQ== Sec WebSocket扩展:permessage deflate;客户端\u最大\u窗口\u位'

JavaScript代码(客户端):

Python代码(服务器):


web套接字是在HTTP上分层的,因此这是预期的行为。您需要一个web服务器(或说HTTP的东西)来处理
连接:升级
升级:websocket
部分,然后在获得支持双向通信的有效连接之前执行其余握手

您可以看看如何使用这个包,它很好地包装了这个

chrome.runtime.onMessage.addListener(function(request, sender) {
if (request.action == "getSource") {
  var pageAmount = parseInt(request.source, 10)

  var allHTML = ""
  var BaseURL = "https://www.funda.nl/huur/rotterdam/p"

  function encode_utf8(s) {
    return unescape(encodeURIComponent(s));
  }

  var websocket = new WebSocket('ws://localhost:18364');

  websocket.onopen = function () {
    data = encode_utf8('Test.')
    websocket.send('Test.'); 
  };
message.innerText = request.source;
}
});

function onWindowLoad() {

var message = document.querySelector('#message');

chrome.tabs.executeScript(null, {
file: "getPageContent.js"
}, function() {
// If you try and inject into an extensions page or the         webstore/NTP you'll get an error
if (chrome.runtime.lastError) {
  message.innerText = 'There was an error injecting script : \n' + chrome.runtime.lastError.message;
}
});
}

window.onload = onWindowLoad;
import socket

LocalSocket = socket.socket()
allHTML = ''

try:  # Connecting the Socket
LocalSocket = socket.socket(socket.AF_INET,     socket.SOCK_STREAM)
LocalSocket.setsockopt(socket.SOL_SOCKET,   socket.SO_REUSEADDR, 1)
LocalSocket.bind(('localhost', 18364))
print("Connected.")
except socket.error as err:
print("ConnectionError: %s" % err)


def main():
LocalSocket.listen(1)

c, addr = LocalSocket.accept()
print('Got connection from', addr)
print(c.recv(1024))

c.close()

if __name__ == "__main__":
main()