如果想访问一个国内访问不了的国外接口,该如何操作?

有这么一个需求,业务上想通过curl的方式请求国外的一个接口,但是国外接口在国内无法访问,我们该如何操作呢。

这种情况我们可以通过简单的代理的方式来实现,下面给大家提供几种方式来实现我们的需求:

方法一:使用 Squid HTTP 代理(适合浏览器和 HTTP 工具)
步骤(假设国外服务器系统为 Ubuntu):

安装 Squid

sudo apt update
sudo apt install squid -y

编辑配置文件

sudo nano /etc/squid/squid.conf

在配置文件末尾添加:

http_access allow all
http_port 3128

重启 Squid

sudo systemctl restart squid
sudo systemctl enable squid

开放 3128 端口(防火墙设置)

sudo ufw allow 3128

国内访问方式(以 curl 为例)

curl -x http://<你国外服务器IP>:3128 https://v1.cnop.net

方法二:使用 socat 建立端口转发(适合单一接口转发)

如果你只想让国内访问某一个接口地址,比如 https://v1.cnop.net,可以在国外服务器上直接转发。
步骤:

 安装 socat

sudo apt update
sudo apt install socat -y

启动转发(将国外服务器的某个端口转发到接口)

sudo socat TCP-LISTEN:8888,reuseaddr,fork TLS:api.cnop.net:443,verify=0

上面会将 https://v1.cnop.net 映射到 http://your-server-ip:8888

国内访问方式:

    curl -k http://your-server-ip:8888

方法三:使用 SSH 动态代理(适合临时使用,适配全局流量)

如果你只偶尔访问该接口,也可以使用 SSH 建立一个 SOCKS 代理:
国内电脑执行命令(假设你用的是 Linux/Mac):

ssh -D 1080 user@国外服务器IP

    Windows 可以使用 PuTTY / MobaXterm 等工具配置 SOCKS5 代理。

然后将你国内软件(curl、Postman、浏览器)配置 SOCKS5 代理:

socks5://127.0.0.1:1080

进阶:nginx 反向代理(适合接口映射,自建中转服务)

如果你想给 https://v1.cnop.net 设置一个国内可用的中转地址,可以在国外服务器上用 NGINX 设置反向代理:

安装 NGINX:

sudo apt install nginx -y

配置代理(/etc/nginx/sites-enabled/default 或新增配置):

server {
    listen 8080;
    location / {
        proxy_pass https://v1.cnop.net;
        proxy_ssl_verify off;
    }
}

重启 NGINX:

sudo systemctl restart nginx

国内访问:

curl http://your-server-ip:8080

评论 (1)

发表评论

您的邮箱地址不会被公开。