每天一斤可乐 发表于 2025-8-19 13:50

freerdp远程的窗口使用360卡死

大佬们求助
麒麟服务器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["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()), list(tabs.values())
    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.value='用户';
a.dispatchEvent(new Event('input',{'bubbles':true}));
a.value='密码';
a.dispatchEvent(new Event('input',{'bubbles':true}));
const b = document.getElementsByTagName('button');
b.click();
"""

js_code2 = """
const d = document.getElementsByTagName('li');
d.click();
d.click();
d.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(, 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)

360fans_57672281 发表于 2025-8-20 10:12

您好,请添加下360安全浏览器官方技术支持QQ群,帮您解决.QQ群:656410310
页: [1]
查看完整版本: freerdp远程的窗口使用360卡死