Linux - 用 Squid 部署 http、https 代理服务器

1,666 阅读4分钟

背景

使用 python 爬取 boss 直聘的网站 ip 会被封禁,需要使用代理才行,然后自己用 腾讯云 的服务器开一个 ip 使用一下

一、部署

要在CentOS 7.2上使用Squid开启HTTP、HTTPS和Socket代理,可以按照以下步骤操作:

  1. 安装Squid: 使用以下命令安装Squid软件包:

    sudo yum install squid
    
  2. 配置Squid: 打开Squid配置文件/etc/squid/squid.conf

    sudo vi /etc/squid/squid.conf
    
  3. 配置HTTP代理: 找到并取消注释以下行,确保以下行在Squid配置文件中没有注释:

  4. Ps: 配置了这个之后如果要修改端口,有缓存问题,最下面删除缓存

    http_port 3128
    
  5. 配置HTTPS代理: 在Squid配置文件中添加以下行,以开启HTTPS代理:

    http_port 3129 ssl-bump cert=/etc/squid/ssl_cert/myCA.pem generate-host-certificates=on dynamic_cert_mem_cache_size=4MB
    ssl_bump server-first all
    sslcrtd_program /usr/lib64/squid/ssl_crtd -s /var/lib/ssl_db -M 4MB
    sslcrtd_children 8 startup=1 idle=1
    acl step1 at_step SslBump1
    ssl_bump peek step1
    ssl_bump bump all
    
  6. 配置Socket代理: 在Squid配置文件中添加以下行,以开启Socket代理:

    acl socket_ports port 1080
    acl allowed_ips src 192.168.0.0/24
    http_access allow socket_ports allowed_ips
    
  7. 保存并关闭文件。

  8. 启动Squid服务: 使用以下命令启动Squid服务:

    sudo systemctl start squid
    

二、放开配置防火墙端口

查看打开的防火墙端口列表

```bash
firewall-cmd --zone=public --list-ports
```
  1. 放开 3128 和 3129 端口:

    sudo firewall-cmd --zone=public --add-port=3128/tcp --permanent
    sudo firewall-cmd --zone=public --add-port=3129/tcp --permanent
    sudo firewall-cmd --reload
    

重启防火墙

sudo firewall-cmd --reload
  1. 去腾讯云服务器上面打开安全组 3128 端口

三、增加2句,隐藏真实ip变成匿名代理

复制代码
via off
forwarded_for delete
  1. 最终配置:
复制代码
http_port 3128 #默认端口号
acl all src 0.0.0.0/0.0.0.0 #允许所有ip访问, all是一个名字,可以随便起
via off
forwarded_for delete
http_access allow all #允许上面定义的all这个规则访问
  1. 初始化:在第一次启动之前或者修改了cache路径之后,需要重新初始化cache目录
复制代码
squid -z
  1. 启动:
复制代码
systemctl start squid
  1. 然后就可以在浏览器或者自己的爬虫中使用了使用的话可以使用chrome+Proxy SwitchyOmega 进行配置查看代理日志可以使用如下命令:
tail -f /var/log/squid/access.log 

四、后续修改了配置文件都需要重启


systemctl restart squid

等待Squid服务重启后,再次运行以下命令以确认Squid服务是否重新启动:

1systemctl status squid

如果Squid服务状态为Active: active (running),则表示服务已成功重启。

五、加快 https 代理访问速度

dns_v4_first on

六、配置用户名密码校验

httpd-tools: 这是包含 htpasswd 命令的软件包,用于创建和管理密码文件 要设置 Squid 的用户名和密码,可以按照以下步骤进行操作:

sudo yum install httpd-tools

输入以下命令创建密码文件并添加用户:

```
sudo htpasswd -c /etc/squid/passwd 用户名
```

替换 "用户名" 为你想要设置的实际用户名。执行此命令后,会要求你输入密码并确认密码。

  1. 如果要添加更多用户,可以使用以下命令:

    sudo htpasswd /etc/squid/passwd 用户名
    

    替换 "用户名" 为你想要添加的实际用户名。同样,执行此命令后,会要求你输入密码并确认密码。

打开 Squid 配置文件进行编辑:

```
sudo vi /etc/squid/squid.conf
```

在配置文件中找到 http_access allow all 这一行,删除,并在原位置添加以下配置:

```
auth_param basic program /usr/lib64/squid/basic_ncsa_auth /etc/squid/passwd
auth_param basic children 5
auth_param basic realm Squid proxy-caching web server
auth_param basic credentialsttl 2 hours
auth_param basic casesensitive off
acl authenticated proxy_auth REQUIRED
http_access allow authenticated
```

这些配置将启用基本的 HTTP 身份验证,并将用户凭据保存在 /etc/squid/passwd 文件中。

重启 Squid 服务以使配置生效:

```
sudo systemctl restart squid
```

现在访问 Squid 代理时,将需要提供用户名和密码才能获得访问权限。

缓存问题解决

  1. 清除 Squid 缓存:

    • 使用以下命令停止 Squid 服务
sudo systemctl stop squid
-   使用以下命令清除 Squid 缓存文件:
sudo rm -rf /var/spool/squid/*

使用以下命令启动 Squid 服务:

sudo systemctl start squid