我们尝试维护过一个免费的代理池,但是代理池效果用过就知道了,毕竟里面有大量免费代理,虽然这些代理是可用的,但是既然我们能刷到这个免费代理,别人也能呀,所以就导致这个代理同时被很多人使用来抓取网站,所以当我们兴致勃勃地拿他来抓取某个网站的时候,会发现它还是被网站封禁的状态,所以在某些情况下免费代理池的成功率还是比较低的。
当然我们也可以去购买一些代理,比如几块钱提取几百几千个的代理,然而经过测试后质量也是很一般,也可以去购买专线代理,不过价格也是不菲的。那么目前最稳定而且又保证可用的代理方法就是设置ADSL拨号代理了。
本篇来讲解一下ADSL拨号代理服务器的相关设置。
什么是ADSL
大家可能对ADSL比较陌生,ADSL全称叫做Asymmetric Digital Subscriber Line,非对称数字用户环路,因为它的上行和下行带宽不对称。它采用频分复用技术把普通的电话线分成了电话、上行和下行三个相对独立的信道,从而避免了相互之间的干扰。
有种主机叫做动态拨号VPS主机,这种主机在连接上网的时候是需要拨号的,只有拨号成功后才可以上网,每拨一次号,主机就会获取一个新的IP,也就是它的IP并不是固定的,而且IP量特别大,几乎不会拨到相同的IP,如果我们用它来搭建代理,既能保证高度可用,又可以自由控制拨号切换。
经测试发现这也是最稳定最有效的代理方式,本节详细介绍一下ADSL拨号代理服务器的搭建方法。
购买动态拨号VPS主机
所以在开始之前,我们需要先购买一台动态拨号VPS主机,这样的主机在百度搜索一下,服务商还是相当多的,在这里推荐一家云立方,感觉还是比较良心的,非广告。
配置的话可以自行选择,看下带宽是否可以满足需求就好了。
购买完成之后,就需要安装操作系统了,进入拨号主机的后台,首先预装一个操作系统。
在这里推荐安装CentOS7系统。
然后找到远程管理面板找到远程连接的用户名和密码,也就是SSH远程连接服务器的信息。
比如我这边的IP端口分别是 153.36.65.214:20063,用户名是root。
命令行下输入:
[color=#AAAAAA !important]1
| [color=teal !important]ssh [color=#002D7A !important]root[color=#333333 !important]@[color=#009999 !important]153.36.65.214[color=#006FE0 !important] [color=#006FE0 !important]-p[color=#006FE0 !important] [color=#009999 !important]20063
|
然后输入管理密码,就可以连接上远程服务器了。
进入之后,可以发现有一个可用的脚本文件,叫做ppp.sh,这是拨号初始化的脚本,运行它会让我们输入拨号的用户名和密码,然后它就会开始各种拨号配置,一次配置成功,后面的拨号就不需要重复输入用户名和密码了。
运行ppp.sh脚本,输入用户名密码等待它的配置完成。
都提示成功之后就可以进行拨号了。
在拨号之前如果我们测试ping任何网站都是不通的,因为当前网络还没联通,输入拨号命令:
[color=#AAAAAA !important]1
| [color=#002D7A !important]adsl[color=#006FE0 !important]-[color=#002D7A !important]start
|
可以发现拨号命令成功运行,没有任何报错信息,这就证明拨号成功完成了,耗时约几秒钟。接下来如果再去ping外网就可以通了。
如果要停止拨号可以输入:
[color=#AAAAAA !important]1
| [color=#002D7A !important]adsl[color=#006FE0 !important]-[color=#002D7A !important]stop
|
停止之后,可以发现又连不通网络了。
所以只有拨号之后才可以建立网络连接。
所以断线重播的命令就是二者组合起来,先执行adsl-stop再执行adsl-start,每拨一次号,ifocnfig命令观察一下主机的IP,发现主机的IP一直是在变化的,网卡名称叫做ppp0。
所以,到这里我们就可以知道它作为代理服务器的巨大优势了,如果将这台主机作为代理服务器,如果我们一直拨号换IP,就不怕遇到IP被封的情况了,即使某个IP被封了,重新拨一次号就好了。
所以接下来我们要做的就有两件事,一是怎样将主机设置为代理服务器,二是怎样实时获取拨号主机的IP。
设置代理服务器
之前我们经常听说代理服务器,也设置过不少代理了,但是可能没有自己设置吧,自己有一台主机怎样设置为代理服务器呢?接下来我们就亲自试验下怎样搭建HTTP代理服务器。
在Linux下搭建HTTP代理服务器,推荐TinyProxy和Squid,配置都非常简单,在这里我们以TinyProxy为例来讲解一下怎样搭建代理服务器。
安装TinyProxy
当然第一步就是安装TinyProxy这个软件了,在这里我使用的系统是CentOS,所以使用yum来安装,如果是其他系统如Ubuntu可以选择apt-get等命令安装,都是类似的。
命令行执行yum安装指令:
[color=#AAAAAA !important]1
[color=#AAAAAA !important]2
[color=#AAAAAA !important]3
| [color=teal !important]yum [color=#002D7A !important]install[color=#006FE0 !important] [color=#006FE0 !important]-y[color=#006FE0 !important] [color=#002D7A !important]epel[color=#006FE0 !important]-[color=teal !important]release
[color=teal !important]yum [color=#002D7A !important]update[color=#006FE0 !important] [color=#006FE0 !important]-y
[color=teal !important]yum [color=#002D7A !important]install[color=#006FE0 !important] [color=#006FE0 !important]-y[color=#006FE0 !important] [color=#002D7A !important]tinyproxy
|
运行完成之后就可以完成tinyproxy的安装了。
配置TinyProxy
安装完成之后还需要配置一下TinyProxy才可以用作代理服务器,需要编辑配置文件,它一般的路径是/etc/tinyproxy/tinyproxy.conf。
可以看到有一行
[color=#AAAAAA !important]1
| Port[color=#006FE0 !important] [color=#009999 !important]8888
|
在这里可以设置代理的端口,默认是8888。
然后继续向下找,有这么一行
[color=#AAAAAA !important]1
| Allow[color=#006FE0 !important] [color=#009999 !important]127.0.0.1
|
这是被允许连接的主机的IP,如果想任何主机都可以连接,那就直接将它注释即可,所以在这里我们选择直接注释,也就是任何主机都可以使用这台主机作为代理服务器了。
修改为
[color=#AAAAAA !important]1
| [color=#B85C00 !important]# Allow 127.0.0.1
|
设置完成之后重启TinyProxy即可。
[color=#AAAAAA !important]1
| [color=teal !important]service [color=teal !important]tinyproxy [color=#002D7A !important]start
|
验证TinyProxy
好了,这样我们就成功搭建好代理服务器了,首先ifconfig查看下当前主机的IP,比如当前我的主机拨号IP为112.84.118.216,在其他的主机运行测试一下。
比如用curl命令设置代理请求一下httpbin,检测下代理是否生效。
<div id="crayon-59e55cc1a59a6798312222" class="crayon-syntax crayon-theme-github crayon-font-monaco crayon-os-pc print-yes notranslate crayon-wrapped" data-settings=" minimize scroll-mouseover wrap"style="box-sizing: border-box; text-size-adjust: none; width: 816px; padding: 0px; margin: 12px 0px; font-family: Monaco, MonacoRegular, "Courier New", monospace; color: rgb(85, 85, 85); text-indent: 30px; float: left; height: auto; overflow: hidden !important; position: relative !important; direction: ltr !important; border: 1px solid rgb(222, 222, 222) !important; background-color: rgb(248, 248, 255) !important; line-height: 15px !important;">
<div class="crayon-main"style="background: 0px center; border: 0px; padding: 0px; margin: 0px; width: 814.667px; overflow: hidden; position: relative; z-index: 1;">[table=98%,none][tr][td][color=#AAAAAA !important]1
[/td] |