用于大数据采集用的代理池 在数据采集的过程中,最需要的就是一直变化的代理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

ProxyApi-大数据采集用的IP代理池的更多相关文章

  1. 记一次企业级爬虫系统升级改造(六):基于Redis实现免费的IP代理池

    前言: 首先表示抱歉,春节后一直较忙,未及时更新该系列文章. 近期,由于监控的站源越来越多,就偶有站源做了反爬机制,造成我们的SupportYun系统小爬虫服务时常被封IP,不能进行数据采集. 这时候 ...

  2. 5 使用ip代理池爬取糗事百科

    从09年读本科开始学计算机以来,一直在迷茫中度过,很想学些东西,做些事情,却往往陷进一些技术细节而蹉跎时光.直到最近几个月,才明白程序员的意义并不是要搞清楚所有代码细节,而是要有更宏高的方向,要有更专 ...

  3. Python爬虫之ip代理池

    可能在学习爬虫的时候,遇到很多的反爬的手段,封ip 就是其中之一. 对于封IP的网站.需要很多的代理IP,去买代理IP,对于初学者觉得没有必要,每个卖代理IP的网站有的提供了免费IP,可是又很少,写了 ...

  4. python开源IP代理池--IPProxys

    今天博客开始继续更新,谢谢大家对我的关注和支持.这几天一直是在写一个ip代理池的开源项目.通过前几篇的博客,我们可以了解到突破反爬虫机制的一个重要举措就是代理ip.拥有庞大稳定的ip代理,在爬虫工作中 ...

  5. 反爬虫之搭建IP代理池

    反爬虫之搭建IP代理池 听说你又被封 ip 了,你要学会伪装好自己,这次说说伪装你的头部.可惜加了header请求头,加了cookie 还是被限制爬取了.这时就得祭出IP代理池!!! 下面就是requ ...

  6. 打造IP代理池,Python爬取Boss直聘,帮你获取全国各类职业薪酬榜

    爬虫面临的问题 不再是单纯的数据一把抓 多数的网站还是请求来了,一把将所有数据塞进去返回,但现在更多的网站使用数据的异步加载,爬虫不再像之前那么方便 很多人说js异步加载与数据解析,爬虫可以做到啊,恩 ...

  7. 【解决方案】IP代理池设计与解决方案

    一.背景 爬虫服务请求量大,为了应对反爬措施,增加爬虫的爬取效率和代理IP使用率,需要设计一个IP代理池,满足以下需求: 定时任务获取第三方代理 及时剔除IP代理池中失效的IP 业务隔离IP 若IP未 ...

  8. Flask开发系列之Flask+redis实现IP代理池

    Flask开发系列之Flask+redis实现IP代理池 代理池的要求 多站抓取,异步检测:多站抓取:指的是我们需要从各大免费的ip代理网站,把他们公开的一些免费代理抓取下来:一步检测指的是:把这些代 ...

  9. 开源IP代理池续——整体重构

    开源IP代理池 继上一篇开源项目IPProxys的使用之后,大家在github,我的公众号和博客上提出了很多建议.经过两周时间的努力,基本完成了开源IP代理池IPProxyPool的重构任务,业余时间 ...

随机推荐

  1. 零基础要怎么样学习嵌入式Linux--走进嵌入式

    零基础要怎么样学习嵌入式希望可以通过这一篇帖子让大家走进嵌入式,对嵌入式的学习不再那么陌生. 嵌入式Linux工程师的学习需要具备一定的C语言基础,因此面对许多朋友只是在大一或者大二学习过C(还不一定 ...

  2. 滑动窗口的最大值 牛客网 剑指Offer

    滑动窗口的最大值 牛客网 剑指Offer 题目描述 给定一个数组和滑动窗口的大小,找出所有滑动窗口里数值的最大值.例如,如果输入数组{2,3,4,2,6,2,5,1}及滑动窗口的大小3,那么一共存在6 ...

  3. evaluate-reverse-polist-notation leetcode C++

    Evaluate the value of an arithmetic expression in Reverse Polish Notation. Valid operators are+,-,*, ...

  4. Bzoj P2212 [Poi2011]Tree Rotations | 线段树合并

    题目链接 通过观察与思考,我们可以发现,交换一个结点的两棵子树,只对这两棵子树内的节点的逆序对个数有影响,对这两棵子树以外的节点是没有影响的.嗯,然后呢?(っ•̀ω•́)っ 然后,我们就可以对于每一个 ...

  5. cf Two Sets (我用二分最大匹配做的)

    题意: n个数p1,p2....pn     两个数a,b 把它们分成A,B两个集合. 若x属于A,a-x一定属于A. 若x属于B,b-x一定属于B. 问是否可能将这n个数分成两个集合.若可以,输出每 ...

  6. 【完美解决】IDEA 中 Maven 报错 Cannot resolve xxx 和 Maven 中 Dependencies 报红/报错。

    目录 前提 场景 解决办法 1.首先,清除缓存,点击之后重启IDEA. 2.关闭IDEA,打开项目文件夹 3.重新打开 IDEA,找到右边的 Maven 4.解决 Maven 中 Dependenci ...

  7. SimpleNVR流媒体服务系统录像功能解析

    录像的回放与观看是许多人在使用视频监控时必不可少的需求.人不可能每时每刻都观看视频,而录像能对摄像机的视频信息进行存储,方便用户的后期回放查看,因此,SimpleNVR的录像功能应运而生.       ...

  8. Java学到什么程度能找到一份还不错的工作

    我的读者里有很多 Java 新人,新人是指正在学 Java 的.以及工作时间不长的年轻人,他们经常问我一个问题: Java 学到什么程度才能找到一份还不错的工作? 今天我就从我自己面试新人的角度来回答 ...

  9. Linux usb 1. 总线简介

    文章目录 1. USB 发展历史 1.1 USB 1.0/2.0 1.2 USB 3.0 1.3 速度识别 1.4 OTG 1.5 phy 总线 1.6 传输编码方式 2. 总线拓扑 2.1 Devi ...

  10. Linux ns 3. Mnt Namespace 详解

    1. 文件系统层次化 对 Linux 系统来说一切皆文件,Linux 使用树形的层次化结构来管理所有的文件对象. 完整的Linux文件系统,是由多种设备.多种文件系统组成的一个混合的树形结构.我们首先 ...