我正在研究一个刮刀,它通过Chrome延伸部分工作。它抓取页面上的所有超文本标记语言,并将其发送到过滤和保存数据的python代码。我这样做刮擦的原因是因为网站有蒸馏网络和一个“传统”刮刀被阻止。
我成功地连接了这两个代码,但每当我尝试向python服务器发送“Test”时,它只输出浏览器的标题。
b'GET/HTTP/1.1主机:localhost:18364连接:升级Pragma:no-cache-cache-Control:no-cache-User-Agent:Mozilla/5.0(Windows NT 10.0;Win64;x64)AppleWebKit/537.36(KHTML,类似Gecko)Chrome/78.0.3904.108 Safari/537.36升级:websocket来源:Chrome-extension://ocplnbpkkcpcomkjioockgnlohhkdeic Sec WebSocket版本:13接受编码:gzip,deflate,br接受html" target="_blank">语言:nl nl,nl;q=0.9,在美国;q=0.8,en;q=0.7秒WebSocket密钥:SDC7zPgHK/eV QRSJy0DZQ==秒WebSocket扩展:permessage deflate;客户端\u最大\u窗口\u位'
JavaScript代码(客户端):
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;
Python代码(服务器):
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()
web套接字是在HTTP上分层的,因此这是预期的行为。您需要一个web服务器(或说HTTP的东西)来处理连接:升级
和升级:websocket
部分,然后在获得支持双向通信的有效连接之前执行其余握手
您可以看看如何使用websockets
包,它很好地包装了这一点
问题内容: 我如何使用getOutputStream方法发送一个strin。正如他们提到的,它只能发送字节。到目前为止,我可以发送一个字节。但不是字符串值。 提前致谢 问题答案: 如何使用PrintWriter: 编辑 :找到了我自己的答案,看到讨论了一个改进,但未列出。这是使用OutputStreamWriter编写字符串的更好方法:
问题内容: 我正在编写一个TCP服务器,可能需要15秒钟或更长时间才能开始生成对某些请求的响应主体。如果响应需要几秒钟才能完成,则某些客户端希望在其末端关闭连接。 由于生成响应非常占用CPU,因此我宁愿在客户端关闭连接时立即停止任务。目前,直到我发送第一个有效载荷并收到各种挂断错误后,我才发现这一点。 如何检测对等端已关闭连接而没有发送或接收任何数据?这意味着所有数据都保留在内核中,或者实际上没有
问题内容: 我有两个脚本,Server.py和Client.py。我有两个目标: 为了能够一次又一次地从客户端向服务器发送数据。 为了能够将数据从服务器发送到客户端。 这是我的Server.py: 这是我的客户: 该函数首次运行(“ e”进入服务器,我返回返回消息),但是如何使它一遍又一遍地发生(类似于聊天应用程序)?该问题在第一次之后开始。消息不会在第一次之后发送。我究竟做错了什么?我是pyth
问题内容: 我正在建立一个客户-服务器项目。 我需要的是客户端发送一个字符串,例如“ Pendu”,服务器接收该字符串并将一个名为“ Pendu”的对象发送回客户端。 这是我的代码: 该类在包中定义: 我的问题是: 首先,我执行服务器,然后看到控制台中显示的内容。 然后我执行客户端,在控制台中,我收到如下消息: 同时,服务器端未显示任何新内容。 现在,我停止客户端,并显示服务器的所有其他消息: 当
我正在编写一个简单的TCP客户端和服务器Perl脚本。到现在为止,我使用wireshark验证了三路TCP握手,并且建立了连接。但当我尝试发送或恢复数据时,什么也不会发生。 1)客户端和服务器之间的主要区别只是服务器增加了一个LISTEN参数,使它能够侦听传入的连接? 2)在recv和显示数据之间是否缺少任何步骤? 3)当程序第一次执行while循环时,难道不应该至少发送硬编码字符串“$respo
问题内容: 如何创建SSL套接字连接? 我真的需要创建密钥库吗?该密钥库应该与我所有的客户端应用程序共享吗? 我用以下代码创建了一个服务器: 我用以下代码在android上创建了一个客户端: 但是当我尝试连接时,会引发以下错误: 问题答案: 您需要一个证书来建立ssl连接,您可以在密钥库中加载证书,也可以加载证书本身。我将显示一些有关keystore选项的示例。 您的代码需要一些参数才能运行: 您