搭建http代理+apt代理+wget代理+yum代理配置

A、部署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

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

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

[root@Python3-study-LT zhangjin]# 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)
}

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

wget https://qiniu.wsfnk.com/bokefiles/http-proxy

C、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即可.

D、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

E、Linux 设置yum代理

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

F、Linux 直接全局将http https都设置为代理(不想用了只有重启才行了)

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

source /etc/profile

G、curl 测试代理是否生效

    curl -x xxxx:4080 baidu.com        #前面是代理服务ip及监听端口
声明:本文为原创,作者为 辣条①号,转载时请保留本声明及附带文章链接:https://boke.wsfnk.com/archives/996.html
谢谢你请我吃辣条谢谢你请我吃辣条

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

最后编辑于:2023/9/20作者: 辣条①号

现在在做什么? 接下来打算做什么? 你的目标什么? 期限还有多少? 进度如何? 不负遇见,不谈亏欠!

暂无评论

发表回复

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

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

文章目录