我已成功建立连接。我的扩展程序成功获取了当前网址。但是由于某种原因,我无法在python服务器中获取该网址。
这是我的扩展程序的HTML:
<html>
<head>
<title>Getting Started Extension's Popup</title>
<style>
body {
font-family: "Segoe UI", "Lucida Grande", Tahoma, sans-serif;
font-size: 100%;
}
#status {
/* avoid an excessively wide status text */
white-space: pre;
text-overflow: ellipsis;
overflow: hidden;
max-width: 400px;
}
</style>
<script src="jquery.min.js"></script>
</head>
<body>
<div id="url">url</div>
<input type="button" id="getUrl" value="get url"/>
<input type="text" id="output" />
<script type="text/javascript" src="Analyze.js"></script>
</body>
</html>`
这是我的扩展程序的JavaScript:
var urlButton = document.getElementById('getUrl');
var output = document.getElementById('output');
var url;
var data;
websocket = new WebSocket('ws://localhost:12345');
function encode_utf8(s) {
return unescape(encodeURIComponent(s));
}
urlButton.onclick = function() {
chrome.tabs.query({active: true,
currentWindow: true}, function (tabs) {
url = tabs[0].url.toString();
data = encode_utf8(url)
console.log(data);
websocket.send(data);
});
});
这是相关的python代码:
import socket
HOST = '127.0.0.1'
PORT = 12345
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
s.bind((HOST, PORT))
s.listen(1)
def socket():
conn1, addr1 = s.accept()
while 1:
try:
data = conn1.recv(1024)
except socket.error:
print('error')
if data:
print(data.decode('utf-8'))
当我打开chrome扩展程序时,将建立连接,并且python服务器将显示如下信息:
GET / HTTP/1.1
Host: localhost:12345
Connection: Upgrade
Pragma: no-cache
Cache-Control: no-cache
Upgrade: websocket
Origin: chrome-extension: etc....
但是,当我单击按钮以从Chrome扩展程序“获取网址”时。当我检查我的JavaScript时,会打印正确的url,但是在python端没有任何反应。
我的整个目标是让chrome扩展程序将URL发送到python服务器,然后python服务器将发送回json,并将其显示在HTML中。
如果您有任何想法,为什么不发送或不收集URL?请告诉我!谢谢您抽出宝贵时间来帮助