远程请求Squid

不久前在办公室抓取某网站S被对方发现,导致对方自动屏蔽了来自办公室网络的所有HTTP请求,连正儿八经地用浏览器打开也不行。为了可以摸索出“改头换面”(改HTTP头部)访问的方法,必须先成功访问至少一次,看看发出的HTTP头部是怎样的才行。恰好想起自己有一台腾讯云服务器,登上去用curl访问网站S,发现是成功的(也就是尚未被屏蔽)。既然如此,干脆在服务器上部署一套Squid作为正向代理,帮助办公网络的请求成功抵达网站S并拿到响应页面。

apt-get安装了squid软件包后启动并监听端口8321,在办公网络下将公网地址和8321端口作为代理配置传递给curl-x选项,访问网站S。不料Squid拒绝了我的请求,返回了如下内容(节选自curl -v命令的输出)

< HTTP/1.1 403 Forbidden
< Server: squid/3.5.12
< Mime-Version: 1.0
< Date: Wed, 17 May 2017 15:18:08 GMT
< Content-Type: text/html;charset=utf-8
< Content-Length: 3531
< X-Squid-Error: ERR_ACCESS_DENIED 0
< Vary: Accept-Language
< Content-Language: en
< X-Cache: MISS from VM-44-136-ubuntu
< X-Cache-Lookup: NONE from VM-44-136-ubuntu:8321
< Via: 1.1 VM-44-136-ubuntu (squid/3.5.12)
< Connection: keep-alive

经过一番Google,才知道原来是Squid的配置导致的。在Squid配置文件(/etc/squid/squid.conf)中,默认的acl和http_access指令的设置如下

acl SSL_ports port 443
acl Safe_ports port 80          # http
acl Safe_ports port 21          # ftp
acl Safe_ports port 443         # https
acl Safe_ports port 70          # gopher
acl Safe_ports port 210         # wais
acl Safe_ports port 1025-65535  # unregistered ports
acl Safe_ports port 280         # http-mgmt
acl Safe_ports port 488         # gss-http
acl Safe_ports port 591         # filemaker
acl Safe_ports port 777         # multiling http
acl CONNECT method CONNECT
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow localhost manager
http_access deny manager
http_access allow localhost
http_access deny all

由于Squid是按照第一条匹配的http_access指令来决定允许还是拒绝的,因为来自我办公网络的请求实际上命中的是

http_access deny all

因此被拒绝是必然的。为了可以接受来自办公网络发起的请求,首先需要新增一行acl指令。通过Squid的日志(/var/log/squid/access.log)可以查看到被拒绝的请求的IP地址是多少,此处假设IP地址为8.7.198.45,那么相应的acl指令如下

acl myclients src 8.7.198.45

此处的myclients为自定义的名称,顾名思义,它表示“我的客户端”;src是一种acl类型,表示客户端的IP地址;8.7.198.45是src类型下的参数,也就是我所使用的客户端发出的请求的来源IP地址。配置了acl后,还需要配置http_access指令。这个就简单多了,只要允许上面创建的这个acl的访问即可,内容如下

http_access allow myclients

之后再重启Squid服务即可

sudo service squid restart

这时候再从办公网络中以腾讯云服务器上的Squid为正向代理发出请求,就不会再被Squid拒绝了。

全文完

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,973评论 19 139
  • 0×1.ACL概述ACL(Access Control List,访问控制列表),是一系列运用到路由器接口的指令列...
    Zero___阅读 2,847评论 0 3
  • 由于最近要对公司网络进行优化,经过研究使用squid对网络进行正向代理来增加速度. squid下载地址 一、squ...
    骨感冰人阅读 4,111评论 0 1
  • 一、简介 访问控制列表(Access Control List,ACL) 是路由器和交换机接口的指令列表,用来控制...
    Jewel591阅读 3,670评论 0 3
  • 1. Squid是什么? Squid是一个高性能的代理缓存服务器,Squid支持FTP、gopher和HTTP协议...
    国猫阅读 2,938评论 0 1