Ubuntu下搭建高匿HTTP代理(亲测可用)
功能用途
我们在生活中见过各种代理,比如我们距离火车站较远,我们可以选择通过距离最近的火车票代售点来购买火车票。又比如商品代理商,我们拿不到厂家的直接或者,可以通过厂家授权的代理经销商来获得产品。代理服务器负责转发你的请求到目标服务器,然后将目标服务器的响应反馈给你。你可以理解为它就是个联姻的媒婆。代理服务器可以有很多用途,比如:
- 作为一个网络防火墙,将内网与外网隔开。是的外网只能访问代理服务器允许的边界,这是我们常见的正向代理,比如ningx的转发。另外,在一个局域网中如果有一台主机可以上外网,那么我们就可以把这台机器作为代理服务器,为其他机器提供外网的访问功能。
- 作为反爬利器,如果爬虫爬取的目标网站具有较强的反爬机制,最常见的通过IP来限制抓取频率,如果你的爬虫抓取太快,你的IP就会被封禁一段时间甚至永久封禁。此时我们就可以通过高匿代理让抓取的网站识别不出我们的真实IP。
本文提供两种代理情形:
1、两台都有外网IP,一台服务器请求资源通过另外一个服务器,本文重点讲第一种。
2、两台服务器,其中一台服务器只有内网IP,另外一台服务器有公网和内网IP。
两种配置情形大同小异,与第一种情形不同的是只需确认下面配置即可
{
# 确认服务器端ip_forward转发开启
echo 1 > /proc/sys/net/ipv4/ip_forward
ip_forward需要设定为1
sysctl -a |grep -w ip_forward
net.ipv4.ip_forward = 1
#客户端配置
export https_proxy=http://服务端内网ip:3128
}
代理安装
服务器端安装squid3
我是在Ubuntu14.04 64位环境下使用squid3搭建的代理服务器。squid3是一个主流的可配置的、健壮、低消耗的代理服务器。
sudo apt-get install squid3
配置
squid3的配置文件在/etc/squid3/squid.conf,我们使用vim编辑器来配置。
sudo vim /etc/squid3/squid.conf
我们在配置文件的末尾加入以下几行:
#允许的客户端ip
acl allcomputers src 0.0.0.0/0.0.0.0
#配置用户名密码,后面会生成passwords文件
auth_param basic program /usr/lib/squid3/basic_ncsa_auth /etc/squid3/passwords
auth_param basic realm proxy
acl authenticated proxy_auth REQUIRED
http_access allow authenticated allcomputers
找到http_access deny all并注释掉
#http_access deny all
最好修改一下默认的3128端口,因为这个端口是默认的,很容易被网络上的代理爬虫探测到。
http_port
用户名密码认证
网络上有很多专门爬免认证的代理的爬虫,如果我们自己搭建的代理服务器不加认证的话,会被这些爬虫探测到然后沦为了免费代理。
使用htpasswd来创建passwords文件,htpasswd命令在软件包apache2-utils中。
sudo apt-get install apache2-utils
生成password文件
sudo htpasswd -c -d /etc/squid3/passwords 自定义用户名
然后输入两次至少8位的密码,会在/etc/squid3/目录下生成passwords文件,要保证该文件是可读的。
sudo chmod o+r /etc/squid3/passwords
启动服务,也可以使用restart,stop进行重启和关闭。
sudo service squid3 start
或者
etc/init.d/squid start
验证代理是否起作用
squid3的访问日志文件在/var/log/squid3/access.log
tail -f /var/log/squid3/access.log
1543199344.191 118.31.0.74 TCP_DENIED/ HEAD http://www.baidu.com/ squid HIER_NONE/- text/html
1543199365.390 118.31.0.74 TCP_DENIED/ HEAD http://www.baidu.com/ squid HIER_NONE/- text/html
客户端配置
另找一台linux机器打开shell,将我们的代理配置上:
export http_proxy="http://用户名:密码@代理IP:代理端口"
curl -l "http://www.baidu.com"
如果代理配置正确,回输出html,同时代理服务器上的access.log会记录这次请求。
上面的配置只会在命令行界面临时生效,如果退出命令行界面,配置会失效,接下来,我们将上面配置加入到环境变量中去
加入全局环境变量
#备份文件(很重要)
cp /etc/profile /etc/profile.bak
vim /etc/profile
#http 代理
export http_proxy="http://用户名:密码@代理服务器IP:代理端口"
配置高匿
代理分为透明代理、匿名代理、混淆代理、高匿代理,这4种代理,主要是在代理服务器端的配置不同,导致其向目标地址发送请求时,REMOTE_ADDR, HTTP_VIA,HTTP_X_FORWARDED_FOR三个变量不同。
1.透明代理(Transparent Proxy)
REMOTE_ADDR = Proxy IP
HTTP_VIA = Proxy IP
HTTP_X_FORWARDED_FOR = Your IP
透明代理虽然可以直接“隐藏”你的IP地址,但是还是可以从HTTP_X_FORWARDED_FOR来查到你是谁。
2.匿名代理(Anonymous Proxy)
REMOTE_ADDR = proxy IP
HTTP_VIA = proxy IP
HTTP_X_FORWARDED_FOR = proxy IP
匿名代理比透明代理进步了一点:别人只能知道你用了代理,无法知道你是谁。
3.混淆代理(Distorting Proxies)
REMOTE_ADDR = Proxy IP
HTTP_VIA = Proxy IP
HTTP_X_FORWARDED_FOR = Random IP address
如上,与匿名代理相同,如果使用了混淆代理,别人还是能知道你在用代理,但是会得到一个假的IP地址,伪装的更逼真
4.高匿代理(Elite proxy或High Anonymity Proxy)
REMOTE_ADDR = Proxy IP
HTTP_VIA = not determined
HTTP_X_FORWARDED_FOR = not determined
可以看出来,高匿代理让别人根本无法发现你是在用代理,所以是最好的选择。
下面是squid3高匿的设置,我们修改配置文件squid.conf,在最后加上
request_header_access X-Forwarded-For deny all
request_header_access From deny all
request_header_access Via deny all
测试高匿是否生效,我们用上面同样的方法访问,会显示出你使用的IP的地址,我们就可以判断显示的IP和我们使用的代理IP是否相同,如果相同,则匿名生效。
curl -l "http://www.abc.com"
Ubuntu下搭建高匿HTTP代理(亲测可用)的更多相关文章
- centos7下搭建高匿HTTP代理
一.一般适用情况1.两台都有外网IP,一台服务器请求资源通过另外一个服务器,本文重点讲第一种.2.两台服务器,其中一台服务器只有内网IP,另外一台服务器有公网和内网IP. 二.前提 # 确认服务器端i ...
- ubuntu创建wifi热点(android可识别)亲测可用
转自http://jingyan.baidu.com/article/ea24bc39b03fc6da62b331f0.html 如何在ubuntu系统下创建android可识别热点?一般环境下创建的 ...
- 【TP3.2】TP3.2下实现ajax分页(原创+亲测可用)
一,写在最开始:ajax分页的原理,是利用了js的ajax执行请求,获取分页list和分页page [代码块],去替换页面显示数据的[代码块] 技术:js的ajax + TP3.2的fetch(&qu ...
- win7中python3.4下安装scrapy爬虫框架(亲测可用)
貌似最新的scrapy已经支持python3,但是错误挺多的,以下为在win7中的安装步骤: 1.首先需要安装Scrapy的依赖包,包括parsel, w3lib, cryptography, pyO ...
- linux下 几个常用makefile模板,亲测可用
一 生成动态链接库的模板: ####################### # Makefile ####################### # compile and lib parameter ...
- linux 一分钟搭建zookeeper linux 单机版(亲测可用)
wget https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/zookeeper-3.4.14/zookeeper-3.4.14.tar.gzt ...
- 数据库工具DbVisualize安装、破解教程,亲测可用
之前工作中遇到生产环境不允许导入Oracle的dmp文件,只能导入sql脚本,但是表中存在clob字段,直接用plsql工具无法导出clob字段,用了下dbvisualizer可以直接导出,亲测可用. ...
- Ubuntu下搭建yocto
参考自: https://www.jianshu.com/p/f6e0debb5e1f https://blog.csdn.net/qq_31041847/article/details/902114 ...
- 在Ubuntu下搭建ASP.NET 5开发环境
在Ubuntu下搭建ASP.NET 5开发环境 0x00 写在前面的废话 年底这段时间实在太忙了,各种事情都凑在这个时候,没时间去学习自己感兴趣的东西,所以博客也好就没写了.最近工作上有个小功能要做成 ...
随机推荐
- VMWare虚拟机中CPU过高的问题
在VMWare中按默认方式创建的虚拟机,安装的Windows Server 2016 x64操作系统.可打开一个稍微大一点的程序CPU就飙到90%以上,自然整个系统操作起来很卡. 在VMWare中看到 ...
- 使用zlib库进行目录打包
代码很简单,具体过程就不写了. 关于加密压缩,可以看http://www.zlib.net/zlib_faq.html#faq38 中的描述,说是不支持的,但是创建的时候可以传入密码进去,不过我还没有 ...
- android开发的童鞋们 你该学点C++
更多关于C++的知识点,请关注android开发应该学点C++(索引贴)android开发应该学点C++(其他) (*android开发论坛----android开发学习----android开发*) ...
- 用VS2012建立core2.1网站项目后引用Microsoft.AspNetCore.Session不了
做个.NET CORE的新项目,和往常一样,VS2017新建CORE项目(CORE2.1),NUGET引入session,结果引入不了,说什么版本不对应的,把SESSION降了一个版本,可以安装上了, ...
- elast alert
参考文档:<elast alert> 假设报错的内容为: ceph-rest-api service down At least 1 events occurred between 201 ...
- ElasticSearch 内存那点事【转】
“该给ES分配多少内存?” “JVM参数如何优化?““为何我的Heap占用这么高?”“为何经常有某个field的数据量超出内存限制的异常?““为何感觉上没多少数据,也会经常Out Of Memory? ...
- 【转】SAP BW 顾问靠手 — SAP中的例程
什么是例程(Routine)? 例程就是我们可以自己定义的程序代码.通过程序代码来完成我们的需求,因为业务是千变万化,如果想让产品能跟随上业务的脚步,就必须要有非常灵活的功能来补充.大家都知道软件产品 ...
- IDEA的maven项目中 静态文件编译的问题
IDEA的maven项目中,默认源代码目录下的xml等资源文件并不会在编译的时候一块打包进classes文件夹,而是直接舍弃掉. 如果使用的是Eclipse,Eclipse的src目录下的xml等资源 ...
- 【iCore1S 双核心板_ARM】例程二:读取ARM按键状态
实验原理: 按键的一端与STM32的GPIO(PB9)相连,且PB9外接一个1k大小的限流上接电阻. 初始化时把PB9设置成输入模式,当按键弹起时,PB9由于上拉电阻的作用呈高电平(3.3V): 当按 ...
- buildroot 编译问题
buildroot 编译的时候,出现 g++: internal compiler error: Killed (program cc1plus) 这个是因为虚拟机内存不足的原因, 加上一些内存即可 ...