zoukankan      html  css  js  c++  java
  • ProxyApi-大数据采集用的IP代理池

    用于大数据采集用的代理池 在数据采集的过程中,最需要的就是一直变化的代理ip。 自建adsl为问题是只有一个区域的IP。 买的代理存在的问题是不稳定,影响采集效率。 云vps不允许安装花生壳等,即使有花生壳,它的解析也不及时,跟不上3分钟变一次。 本项目的作用是将目前的云vps,安装代理软件,然后使用脚本每隔3分钟拨号一次,返回当前可用的ip给代理池,代理池记录后,提供给API接口给采集程序调用。

    一共有几个板块:代理主机拨号返回ip,代理池接受ip并记录然后提供给采集程序,统计代理主机的数量、每台提供的ip数量等,检查代理ip是否异常并展示到网页,简单的认证,网页执行命令管理云主机。

    项目有个巧妙的地方分享给大家,就是对于后端的采集程序对于api的调用的频率是极高的,每秒可达几百上千次。因为数据量不大,所以全放内存运行,数据库只是接收到新ip地址后在改变了内存里面的变量的同时写到数据作为备份,如果程序出错,启动的时候先加载数据库的数据到内存。

    代理池的程序在ProxyApi.tar中,使用的django框架,当时急用没有写注释,供大家参考。

    1、安装软件:

    我们使用的云立方的云vps,每季度打折后200元不到。推荐系统用centos,它自动将adsl的账号密码弄好。

    yum -y install squid

    yum install -y httpd-tools

    yum install -y openssl

    2、设置代理的账号和密码:

    touch /etc/squid/squid_passwd

    chown squid /etc/squid/squid_passwd

    htpasswd /etc/squid/squid_passwd proxy #会提示输入两次密码

    3、写入配置文件:

    /etc/squid/squid.conf

    4、设置开机启动和重启squid:

    systemctl enable squid && systemctl restart squid

    5、写入拨号脚本:

    adsl.py

    6、启动拨号脚本:

    #也可以写到/etc/rc.d/rc.local,记得把/etc/rc.d/rc.local设置可执行权限,不然不起作用。

    nohup python adsl.py

    7、查询方式,API的接口: 因为公司有几种语言,使用的代理格式不一样,所以这里只返回一个ip地址,代理的端口、用户名、密码是固定的,采集程序自己写。

    http://ip:port/getip 所有随机

    http://ip:port/getip?ip=云主机名称 按云主机名称查询

    http://ip:port/getip?addr=重庆移动,重庆电信&tof=f 按地区随机,addr可以是单值,也可以使多值,多值用小写的,分割,tof (true or false),不写默认为t,传值f表示非

    8、管理:

     http://ip:port/checkip ,状态查询,可以只看故障的主机(只是时间有底色表示最近三次IP重复,暂时不可用,如果前面ip和时间都有底色,表示云主机没有继续提供新ip了,需要排查。),点击主机名称可以看单个主机最近提供的ip,和总的提供的ip及不重复的ip。

    http://ip:port/shell ,可以在网页上执行命令,主要是查看和运行和重启等,vi什么的需要交互的命令是用不了的,top的话,记得用top -n 1;进入之前会有一个认证,后台可以改变密码,主机加入到代理池,程序会自动把云主机的名字写到主机管理里面,但是管理ip及端口、账号、密码需要手动添加,配置后才能网页执行命令。

    主机管理,一页可以完成增删改查,没有做那么的限制和页面。可以查看所有的,也可以分组查看,方便后期在选择vps区域的时候参考。

    执行命令这里,讲一下,做的还算完善,看注释,如果选择了主机的话,就有ip,然后就执行这一个主机,如果只选分组,不选主机就分组内的机器全部执行,然后按顺序返回,如果执行多条命令,会分别添加到相应的黑色区域,然后你也可以在主机的下面分别执行命令。部分主机调试好了,也可以关闭,不会影响其他主机的窗口。如果显示太多了,还可以清屏。

    项目地址:https://github.com/xuyingzhong/ProxyApi

  • 相关阅读:
    C语言的选择结构和条件判断
    学习C语言必须知道的理论知识(第三章数据类型的分类)
    基本输入输出函数以及其格式.
    学习C语言必须知道的理论知识(第三章常量和变量)
    简单的算术题。
    学习C语言必须知道的理论知识(第二章算法)
    学习C语言必须知道的理论知识(第一章)
    学习C语言必须知道的理论知识(第三章常量类型,运算符和表达式)
    C语言中的循环控制语句.
    彻底弄懂JS中的this
  • 原文地址:https://www.cnblogs.com/xuyingzhong/p/9962609.html
Copyright © 2011-2022 走看看