大佬们求助
麒麟服务器arm-v10sp3
安装软件 browser360-13.4.aarch64.rpm
xrdp-0.10.4.2-aarch64.rpm
xorgxrdp-0.10.4-1-aarch64.rpm
freerdp-2.4.1-1.ky10.rpm
python3.8.3
freerdp连接多个用户,使用xorg登录,登录后操作360浏览器打开,关闭,点点点,0-1天内,运行360的用户远程桌面会卡死,其他远程用户是正常,卡死时后看cpu内存没有异常变化
操作火狐同样的步骤,或者长期挂着远程不运行360,没有出现类似问题
这段是python操作浏览器,脚本循环执行,卡死之后日志 到执行js时报错failed to establish a new connnection
import socket
import requests
import websocket
import json
import time
import random
import subprocess
import logging
logging.basicConfig(
filename='run360.log',
level=logging.INFO,
format='%(asctime)s - %(levelname)s - %(message)s',
filemode='a')
def find_available_port(min_port=9222, retry=10):
for _ in range(retry):
port = min_port + random.randint(0,100)
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
try:
s.bind(('127.0.0.1', port))
return port
except OSError:
continue
def list_tab():
resp = requests.get("%s/json" % dev_url)
tabs_map = {}
for tab_json in resp.json():
if tab_json["type"] != "page":
continue
tabs_map[tab_json["id"]] = [tab_json["title"], tab_json["url"]]
return tabs_map
def get_tab(title=None, url=None):
tabs = list_tab()
print(tabs)
if title or url:
tab,url = [(id, _url) for id, (_title, _url) in tabs.items() if (url and url in _url) or (title and title in _title)]
else:
tab,url = list(tabs.keys())[0], list(tabs.values())[0][1]
return tab,url
def excute_js(title=None, url=None, js_code=None):
tab_id, url = get_tab(title, url)
ws = websocket.WebSocket()
ws.connect(f"ws://127.0.0.1:{port}/devtools/page/{tab_id}")
command = {
"id": 1,
"method": "Runtime.evaluate",
"params": {
"expression": js_code
}
}
ws.send(json.dumps(command))
resp = ws.recv()
ws.close()
res = json.loads(resp)
print(res)
js_code="""
const a =document.getElementsByClassName('ant-input');
a[0].value='用户';
a[0].dispatchEvent(new Event('input',{'bubbles':true}));
a[1].value='密码';
a[1].dispatchEvent(new Event('input',{'bubbles':true}));
const b = document.getElementsByTagName('button');
b[0].click();
"""
js_code2 = """
const d = document.getElementsByTagName('li');
d[1].click();
d[2].click();
d[3].click();"""
try:
port = find_available_port()
print(port)
dev_url = f"http://127.0.0.1:{port}"
browser_path = "/usr/bin/browser360-cn-stable"
url = ""
cmd = ["pkill", "-u", "xrdp_198_4", "-9", "browser360"]
subprocess.run(cmd)
time.sleep(3)
param1 = "--no-sanbox"
param2 = "--start-maximized"
param3 = "--hide-crash-restore-bubble"
param4 = "--disable-background-networking"
param5 = "--incognito"
param6 = f"--remote-debugging-port={port}"
param7 = f"--remote-allow-origins=http://127.0.0.1:{port}"
logging.info('----------------start-------------------')
logging.info('start_360')
subprocess.Popen([browser_path, url, param1, param2, param3, param4, param5, param6, param7], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
time.sleep(5)
logging.info('start_login')
excute_js(js_code=js_code)
time.sleep(5)
logging.info('start_process')
excute_js(js_code=js_code2)
except Exception as e:
logging.error(e) |
|
|
|
评论
直达楼层