随着市面上各种AI项目越来越多,使用AI专属浏览器可以方便收集使用各类AI产品。
简单实现
1、GPT的回答
2、根据GPT的提示使用了winform套壳的webview2来实现。其中关键 “–proxy-server” 参数的值,来源来NaiveProxy的客户端的配置文件。
if (webView21 != null)
{
CoreWebView2EnvironmentOptions Options = new CoreWebView2EnvironmentOptions();
Options.AdditionalBrowserArguments = "--proxy-server=socks5://127.0.0.1:18988";
CoreWebView2Environment env =
await CoreWebView2Environment.CreateAsync(null, null, Options);
await webView21.EnsureCoreWebView2Async(env);
webView21.Source = new Uri("https://chat.openai.com/", UriKind.Absolute);
}
NaiveProxy项目
1、服务端安装过程
wget https://go.dev/dl/go1.22.1.linux-amd64.tar.gz
tar -xvzf go1.22.1.linux-amd64.tar.gz -C /usr/local/
cd /usr/local/
nano ~/.bashrc
export GOROOT=/usr/local/go
export GOPATH=/data/go
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin
mkdir /data
mkdir /data/go
source ~/.bashrc
go version
go install github.com/caddyserver/xcaddy/cmd/xcaddy@latest
xcaddy build --with github.com/caddyserver/forwardproxy@caddy2=github.com/klzgrad/forwardproxy@naive
ls
mv caddy /usr/bin/
caddy version
2、下面是Caddyfile 的配置文件内容,第二、三行是为了避开caddy占用80和443 端口。其中xx.com和4431端口, user 与 yourpasswd 四个值需要客户端中使用。如果使用443端口 caddy可以自动申请证书,就不用指定证书路径了,可以用项目上的示例配置文件。
{
order forward_proxy before reverse_proxy
http_port 8080
https_port 8443
}
:4431, xx.com {
tls /path/to/xx.com.cert /path/to/xx.com.key
forward_proxy {
basic_auth user yourpasswd
hide_ip
hide_via
probe_resistance
}
reverse_proxy https://www.hujiang.com {
header_up Host {upstream_hostport}
}
}
3、如果需要后台进程
vim /etc/systemd/system/caddy.service
[Unit]
Description=Caddy
Documentation=https://caddyserver.com/docs/
After=network.target network-online.target
Requires=network-online.target
[Service]
User=root
Group=root
ExecStart=/usr/bin/caddy run --environ --config /etc/caddy/Caddyfile
ExecReload=/usr/bin/caddy reload --config /etc/caddy/Caddyfile
TimeoutStopSec=5s
LimitNOFILE=1048576
LimitNPROC=512
PrivateTmp=true
ProtectSystem=full
AmbientCapabilities=CAP_NET_BIND_SERVICE
[Install]
WantedBy=multi-user.target
4、如果使用1024以下的端口,需要设置权限
setcap cap_net_bind_service=+ep /usr/bin/caddy
5、下载客户端 下面客户端配置文件,第一行是给定制浏览器的启动参数用的,第二行是服务端配置文件里设定的。
{
"listen": "socks://127.0.0.1:18988",
"proxy": "https://user:yourpass@xx.com:4431",
"log": ""
}
6、在winform启动时,启动一个无窗口进程启动客户端navie,退出时kill 客户端进程。
var ps = Process.GetProcesses();
foreach ( Process p in ps)
{
if (p.ProcessName == "naive") return;
}
ProcessStartInfo psi = new ProcessStartInfo
{
FileName = Path.Combine(Application.StartupPath, "naive.exe"),
UseShellExecute = false,
CreateNoWindow = true
};
try
{
using (Process process = new Process { StartInfo = psi })
{
process.Start();
//process.WaitForExit();
}
}
catch (Exception ex) { }