Chrome扩展程序通过套接字将当前网址发送到Python服务器

时间:2019-02-19 03:54:07

标签: javascript python sockets google-chrome-extension

我已成功建立连接。我的扩展程序成功获取了当前网址。但是由于某种原因,我无法在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?请告诉我!谢谢您抽出宝贵时间来帮助

0 个答案:

没有答案