搭建http代理+apt代理+wget代理+yum代理配置(socket5代理)

A、用nc创建http代理(临时使用:推荐)

    nc -l --proxy-type http localhost 4080

B、部署tinyproxy(非常不推荐)

软件安装
    apt install tinyproxy

配置软件
cat > /etc/tinyproxy/tinyproxy.conf << EOF
User tinyproxy
Group tinyproxy
Port 4080
#Listen 192.168.0.1     监听端口
#Bind 192.168.0.1       流量出口
BindSame yes
Timeout 6000
DefaultErrorFile "/usr/share/tinyproxy/default.html"
StatFile "/usr/share/tinyproxy/stats.html"
LogFile "/var/log/tinyproxy/tinyproxy.log"
LogLevel Info
PidFile "/run/tinyproxy/tinyproxy.pid"
MaxClients 200
MinSpareServers 5
MaxSpareServers 20
StartServers 10
MaxRequestsPerChild 0
Allow 0.0.0.0/0
ViaProxyName "tinyproxy"
ConnectPort 443
ConnectPort 563
EOF

重启tinyproxy服务
    systemctl stop firewalld
    systemctl restart tinyproxy
    systemctl enable tinyproxy

日志查看
    tailf /var/log/tinyproxy/tinyproxy.log

C、下载运行go写的http代理程序(监听TCP 4080端口)

C1、源码文件(这是拿来主义,学习使用,非自己所写)(编译 命令:go build http-proxy.go )

[root@Python3-study-LT ]# cat http-proxy.go 
package main

import (
    "bytes"
    "fmt"
    "io"
    "log"
    "net"
    "net/url"
    "strings"
)

func main() {
    // tcp连接,监听4080端口
    l, err := net.Listen("tcp", ":4080")
    if err != nil {
        log.Panic(err)
    }

    // 死循环,每当遇到连接时,调用handle
    for {
        client, err := l.Accept()
        if err != nil {
            log.Panic(err)
        }

        go handle(client)
    }
}

func handle(client net.Conn) {
    if client == nil {
        return
    }
    defer client.Close()

    log.Printf("remote addr: %v\n", client.RemoteAddr())

    // 用来存放客户端数据的缓冲区
    var b [1024]byte
    //从客户端获取数据
    n, err := client.Read(b[:])
    if err != nil {
        log.Println(err)
        return
    }

    var method, URL, address string
    // 从客户端数据读入method,url
    fmt.Sscanf(string(b[:bytes.IndexByte(b[:], '\n')]), "%s%s", &method, &URL)
    hostPortURL, err := url.Parse(URL)
    if err != nil {
        log.Println(err)
        return
    }

    // 如果方法是CONNECT,则为https协议
    if method == "CONNECT" {
        address = hostPortURL.Scheme + ":" + hostPortURL.Opaque
    } else { //否则为http协议
        address = hostPortURL.Host
        // 如果host不带端口,则默认为80
        if strings.Index(hostPortURL.Host, ":") == -1 { //host不带端口, 默认80
            address = hostPortURL.Host + ":80"
        }
    }

    //获得了请求的host和port,向服务端发起tcp连接
    server, err := net.Dial("tcp", address)
    if err != nil {
        log.Println(err)
        return
    }
    //如果使用https协议,需先向客户端表示连接建立完毕
    if method == "CONNECT" {
        fmt.Fprint(client, "HTTP/1.1 200 Connection established\r\n\r\n")
    } else { //如果使用http协议,需将从客户端得到的http请求转发给服务端
        server.Write(b[:n])
    }

    //将客户端的请求转发至服务端,将服务端的响应转发给客户端。io.Copy为阻塞函数,文件描述符不关闭就不停止
    go io.Copy(server, client)
    io.Copy(client, server)
}

C2、已经编译好的可执行文件

# 可执行文件
    wget https://qiniu.wsfnk.com/bokefiles/http-proxy

# 配置为systemd服务
cat > /etc/systemd/system/http-proxy.service <<EOF
[Unit]
Description=http-proxy
After=network.target

[Service]
Type=simple
ExecStart=/opt/http-proxy
ExecReload=/bin/kill -HUP "$MAINPID"
Restart=on-failure
SyslogIdentifier=http-proxy

[Install]
WantedBy=multi-user.target
EOF

D、Linux 设置wget代理

# 直接修改/etc/wgetrc   或者直接往~/.wgetrc(自行创建此文件)添加如下内容:

https_proxy = http://xxxx:4080/
http_proxy = http://xxxx:4080/
use_proxy = on

# 注意:如果不想使用代理了就将~/.wgetrc中的最后一行use_proxy = on改为 use_proxy = off即可.

E、Linux 设置apt代理

# 为apt配置http和https代理,(/etc/apt/apt.conf.d/10proxy默认没有,需要创建)
    cat > /etc/apt/apt.conf.d/10proxy << EOF
Acquire::http::Proxy "http://xxxx:4080";
Acquire::https::Proxy "http://xxxx:4080/";
EOF

# 直接使用即可
    apt update

F、Linux 设置yum代理

    echo "proxy=http://xxxx:4080" >> /etc/yum.conf

G、Linux 直接全局将http https都设置为代理(定义两个代理的环境变量)

cat >> /etc/profile << EOF
export http_proxy=http://xxxx:4080
export https_proxy=http://xxxx:4080
EOF

source /etc/profile

# 注意:该方式会在登录的shell以及子shell中生效,
# 取消方式:删除上面追加的内容,并刷新 source /etc/profile 后,注意其他shell就不生效了,当前shell要重新退出后再登录才会失效(也就是说不用重启)
    # export http_proxy=http://xxxx:4080
    # unset http_proxy

## 可用代理
export http_proxy=http://dn42-vn.211cc.cc:4080
export https_proxy=http://dn42-vn.211cc.cc:4080

export http_proxy=http://dn42-sg.211cc.cc:4080
export https_proxy=http://dn42-sg.211cc.cc:4080

export http_proxy=http://dn42-la.211cc.cc:4080
export https_proxy=http://dn42-la.211cc.cc:4080

H、用docker搭建socket5代理

## docker image 页面
    https://hub.docker.com/r/xkuma/socks5

## 用docker compose ,将容器内部8000映射到外部8000端口,并指定账户名admin,密码password
[root@localhost ~]# cat docker-compose.yml
services:
  socks5-proxy:
    image: xkuma/socks5
    container_name: Socket5
    ports:
      - "8000:8000"
    environment:
      - PROXY_USER=admin
      - PROXY_PASSWORD=password
      - PROXY_SERVER=0.0.0.0:8000
    restart: always

I、curl 测试代理是否生效

    curl -x xxxx:4080 baidu.com        #前面是代理服务ip及监听端口
    # curl 使用用户密码,验证socket5是否生效
    curl --socks5 localhost:8080 --proxy-user your_username:your_password http://ipinfo.io
声明:本文为原创,作者为 辣条①号,转载时请保留本声明及附带文章链接:https://boke.wsfnk.com/archives/996.html
谢谢你请我吃辣条谢谢你请我吃辣条

如果文章对你有帮助,欢迎点击上方按钮打赏作者

最后编辑于:2025/5/8作者: 辣条①号

目标:网络规划设计师、系统工程师、ceph存储工程师、云计算工程师。 不负遇见,不谈亏欠!

暂无评论

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

arrow grin ! ? cool roll eek evil razz mrgreen smile oops lol mad twisted wink idea cry shock neutral sad ???

文章目录