解决CPH与Remote-SSH共同使用不能爬取网页题目的问题

写在前面

环境:本机 windows ,远程 linux。

教程理论上适用于不同的系统,只需修改部分命令。

Update: 如果你只是想实现多人同时编辑代码,直接使用 Live Share 插件即可。

1. 首先解释原因:

在连接到远程工作目录时,vscode 会把本地安装的插件分为两类:

  1. UI 修改插件
  2. 功能拓展插件

对于功能拓展类的插件,vscode 会要求在远程主机中也安装此插件,这样 CPH 本质上是在远程主机上运行,它其实是通过远程主机上的某端口监听 Competitive Conpanion 发送的 http 数据的,本地的 Competitive Companion 根本无法向其发送题目数据。

2. 获取并开放远程主机CPH监听端口

先在远程主机上打开 vscode,确保 CPH 运行,再打开浏览器上 Competitive Companion 的扩展管理界面,打开 服务工作进程\网络 ,然后先随便点个题目爬取一下,看它发送的数据包哪个被接收了,假设为 27121 端口。

对于 Linux,使用命令 sudo ufw allow 27121 放行 27121 端口。

3. 本地 Competitive Companion 数据转发

先设置 Competitive Companion 要将数据发送至哪个端口,同样打开它的拓展管理界面\拓展选项,第一项 Custom ports 设置为你想要的端口(这里是 6432)。

然后使用 nginx 转发,没有的请自行下载。

下载完解压缩后修改 \conf\nginx.cof 文件,具体配置如下:

    server {
        listen 6432;  # 本地监听端口
        server_name localhost;

        location / {
            proxy_pass http://remote-host:27121;  # 转发到远程主机的端口
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
        }
    }

然后 cd 到 nginx 目录下,运行 nginx。

windows:启动 start nginx 停止 ./nginx -s stop

4. 最后一步

关闭远程主机的 vscode (因为 CPH 会默认在首个打开的 vscode 窗口上显示),

然后本地 vscode 登录远程工作目录,Competitive Companion 直接爬取即可,如果成功的话本地的 vscode 上会弹出 CPH 的语言选项。

posted @ 2025-04-06 19:04  EcapsXD  阅读(77)  评论(0)    收藏  举报