阿里云搭建代理服务器(利用adsl拨号服务器VPS构建代理IP池)



一、工具准备
  • 动态vps:我用的是云立方的动态vps,0.5G内存,11G硬盘,20G宽带,一年1800元。动态VPS主要运行代理服务,消耗宽带,通过拨号改变IP,达到动态代理的效果。
  • 固定IP服务器:阿里云服务器,1核1G内存,40G云盘,一年836元。该服务器主要实时获取动态vps的IP,并提供对外接口。这些服务不会消耗太多资源。此服务器也可以用于运行爬网程序或构建网站。
  • 二、环境搭建动态vps
  • 功能:设置代理服务,在vps上拨号切换IP,将切换后的IP传送到固定IP的服务器。
  • 工具:代理服务-tinyproxy,IP-python的发送请求库。

  • 系统:云立方可以预装系统。我选择的是CentOS7.1系统,在管理后台运行。
  • 服务器:ssh用户@ip -p端口
  • 操作:断网:ADSL-停止,拨号:ADSL-开始。
  • 查一下公开的IP:卷毛icanhazip.com
  • 添加代理以检查IP:curl-x ' IP:port '-v icanhazip.com
  • 判断IP是否有变化:先检查公网IP,然后断开,重拨,再看公网IP。如果发现没有变化,可以再试几次,转播后公共IP不变。
  • 1、代理服务搭建:tinyproxy

    安装命令:

    #添加EPEL仓,然后更新yum源: sudoyum安装EPEL-发布 sudoyum更新 #安装 sudoyum安装-y微小代理 修改配置:

    vim/etc/tiny proxy/tiny proxy . conf 修改端口Port,默认为8888 Port 8888 ,省略了Allow 127.0.0.1。意味着允许所有人访问代理 启动服务:service tiny proxy start
    log:/var/log/tiny proxy/tiny proxy . log
    本地测试:curl-x ' IP:port '-v icanhazip.com。

    注意& Pit:

  • 我开始用芝麻vps。过了这一步,我就可以在VPS上通过局域网IP的代理服务器访问了,但是不能在本地通过公共IP访问。最后发现是因为外网无法访问服务器,尝试了打开端口等操作,都没有反应。云立方可以通过公共IP直接使用代理。
  • yum安装期间出错:yum没有足够的缓存数据继续,解决方案:将/etc/yum.repos.d/epel.repo中的mirrorlist更改为baseurl/etc/resolv.conf文件,并添加名称server 144.144.144.144。断开重播时,有时adsl-start会失败,并显示错误:“/usr/sbin/ADSL-start:line 217:5749 terminated c o n e c t & CONNECT & # 34;连接& # 34;@"& gt/dev/null 2 & gt;&1”,最后发现断线可能不干净。如果adsl-stop多执行几次,adsl-start就会成功。
  • 在代理服务tinyproxy运行期间,报告了此错误:waiting servers (0)小于minspareservers (5)。创建新的孩子。原因是无法创建最大数量的连接来处理请求,因此代理服务将挂起。只需重新启动代理服务。解决办法
  • vim/etc/tiny proxy/tiny proxy . conf max clients 100-& gt;50 #最大连接数 超时600-& gt;20 #超时 2。搭建Python环境(1)安装Python Python依赖项。

    sudo yum install yum-utils sudo yum-build deppython Python源代码连接:https://www.python.org/ftp/python/

    搭建代理服务器

    Curl-o https://www.python.org/FTP/Python/3.5.0/Python-3.5.0.tgz 我用Curl的时候下载不了。我可以从官网下载指定版本的Python,然后上传到服务器。

    tarxfpython-3 . 5 . 0 . tgz CD python-3 . 5 . 0 。/configure make sudo make install 安装完成后通过python3 -V检查当前版本。

    (2)安装虚拟环境

    CD ~ Mkdir Venv CD Venv python 3-M Venv Python 3-用于抓取 Source ~/Venv/Python 3-用于抓取/bin/activate (3)安装相应的Python库

    Pip安装请求 #安装从其他环境导出的库 Pip Install-r requirements . txt 阿里云服务器:功能:接受动态VPS发送的ip,提供接口返回动态VPS的实时IP& port。

  • 工具:web服务-tornado

  • 连接:ssh root@ip -p 22,如果忘记了服务器密码,可以重置实例登录密码和远程连接密码:more-& gt;密码、密钥
  • 如上设置Python环境,安装tornado。
  • Pip安装tornado sudo yum install-y redis #启动服务 redis-server >;& gt/dev/null 2 & gt;&1 & #连接redis redis-cli mongo数据库(不需要安装,实现基本代理功能也不需要这个库)

    # yum中没有mongo的下载源,需要手动添加 VI/etc/yum . repos . d/MongoDB-org-3.4 . repo #并写入以下信息。根据centos 7[/H/][MongoDB-org-3.4][/H/]name = MongoDB repository[/H/]base URL = https://repo.mongoDB.org/yum/red hat/7/MongoDB-org/3.4/x86 _ 666H/]enabled = 1[/H/]gpg key = https://www.mongodb.org/static/PGP/server-3.4.asc[/H/]# Install[/H/]sudoyuminstall-ymongodb-org[/H/]Start:。

  • ssh链接期间权限被拒绝(公钥、GSSAPI-keyex、GSSAPI-with-mic)的错误。解决方案:
  • 通过阿里云web终端登录服务器,修改ssh配置文件。
  • vim/etc/SSH/sshd _ config Change:password authentic ation no(默认为yes) or open comment:PermitRootLogin yes 代码实现逻辑1 .客户:动态VPP

  • 断开连接和拨号的操作由Python执行。成功后,通过匹配获得公有IP,并通过requests库将IP发送给服务器。
  • 为了避免恶意干扰,可以添加传输密钥,服务器对传输密钥进行验证,如果验证失败则不进行IP更新。
  • 设置预定任务,实现IP替换。
  • 传输的数据包括IP、密钥和名称(以区分vps服务器)
  • 2.服务器:固定IP服务器

    使用tornado启动服务并提供两个接口。

  • Post接口:接收客户端发送的IP。成功验证密钥后,使用名称作为密钥,使用ip&port作为val,并将其保存在redis中。
  • 获取接口:从redis获取ip&port并返回。
  • 代理检测程序:可以用来检测IP的可用性,排除无效IP。

    总结
  • 相比直接购买代理,价格更便宜,速度不限,但缺点是从vps拨号,到传输到服务器,再到爬虫使用代理的过程中存在延迟,可能导致切换IP时代理不可用。解决方法是设置超时并休眠几秒钟,然后再试一次。
  • 它不适合需要快速IP交换速度的服务。拨号太频繁。一个是IP有时候不变,一个是容易拨号失败。
  • 如果是在线环境下使用,可以购买更多的动态vps,建立IP池。
  • 参见代码:https://github.com/HLFYY/spiders/tree/master/adsl_server.
  • 您可以还会对下面的文章感兴趣

    使用微信扫描二维码后

    点击右上角发送给好友