代理中心:

简单讲: 精细化控制限制资源的使用,保证有限资源的充分利用及有效性。支持动态增减,实时更新。

需求

rest api提供请求输入与输出

客户端使用代理心跳接收,用于更新代理的使用次数,被占用情况

监测代理可用情况,检查代理对指定请求的响应

按客户端,线程名称,请求任务号,分配代理

代理中心表的curd操作

主要逻辑

简单讲: 精细化控制限制资源的使用,保证有限资源的充分利用及有效性。支持动态增减,实时更新。

回收监控

代理验证

数据表

代理信息表

主键,代理ip,代理端口(-1时为本机代理),用户名,密码,最多允许多少机器使用,
代理体眠时间(扔回代理池后,再次被使用),
代理使用最低间隔(同一个task请求间隔,两者取大),
代理最后使用时间
代理使用次数
代理可用状态
代理标记位(int数值位)
创建时间
最后修改时间
代理组(用于申请时,可以指定代理组)
备注

代理验证申请表

主键,爬虫任务id,请求url,请求参数,最长响应时间,返回内容检测,检测类型(contains regex)
创建时间,最后修改时间,申请状态(初始,进行中,已完成,失败),申请代理个数
创建时已验证代理数,当前已验证代理数,是否在上次申请基础上新增(上次代理数超过时,非新增将不验证)
代理组(只从某个代理组中获取)

代理验证表

验证申请id(pk),爬虫任务id,代理id,验证可用状态,响应时长,验证标记位,
使用次数,使用成功次数,使用失败次数,最后使用时间,

代理分配表

主键,爬虫任务id,验证申请id,代理id,客户端标识,线程标识,
使用次数,使用成功次数,使用失败次数,最后使用时间,分配状态(已分配,已回收,超时未知)
创建时间,修改时间,回收时间,心跳次数,最后一次心跳时间

公用配置表

代理失效回收时间
心跳发送间隔

dao层业务

爬虫数据库通用dao业务:
1、各表的单条记录的curd(更改字段属性)
2、心跳更新(2,3,4扩展dao实现)
3、查询代理入代理验证表
4、查询代理验证表到代理分配表

cralwer_爬虫代理中心的简要设计的更多相关文章

  1. Python爬虫代理池

    爬虫代理IP池 在公司做分布式深网爬虫,搭建了一套稳定的代理池服务,为上千个爬虫提供有效的代理,保证各个爬虫拿到的都是对应网站有效的代理IP,从而保证爬虫快速稳定的运行,当然在公司做的东西不能开源出来 ...

  2. 介绍一种 Python 更方便的爬虫代理池实现方案

    现在搞爬虫,代理是不可或缺的资源 很多人学习python,不知道从何学起.很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手.很多已经做案例的人,却不知道如何去学习更加高深的知识.那 ...

  3. 通过爬虫代理IP快速增加博客阅读量——亲测CSDN有效!

    写在前面 题目所说的并不是目的,主要是为了更详细的了解网站的反爬机制,如果真的想要提高博客的阅读量,优质的内容必不可少. 了解网站的反爬机制 一般网站从以下几个方面反爬虫: 1. 通过Headers反 ...

  4. 【python3】如何建立爬虫代理ip池

    一.为什么需要建立爬虫代理ip池 在众多的网站防爬措施中,有一种是根据ip的访问频率进行限制的,在某段时间内,当某个ip的访问量达到一定的阀值时,该ip会被拉黑.在一段时间内被禁止访问. 这种时候,可 ...

  5. 维护爬虫代理IP池--采集并验证

    任务分析 我们爬的免费代理来自于https://www.kuaidaili.com这个网站.用`requests`将ip地址与端口采集过来,将`IP`与`PORT`组合成`requests`需要的代理 ...

  6. 建立爬虫代理IP池

    单线程构建爬虫代理IP池 #!/usr/bin/python3.5 # -*- coding:utf-8 -*- import time import tempfile from lxml impor ...

  7. 写了个爬虫代理ip的脚本给大家使用

    写了个爬虫代理ip的脚本给大家使用 一.代码 import requests from lxml.html import etree url = 'http://www.kuaidaili.com/f ...

  8. 可能是一份没什么用的爬虫代理IP指南

    写在前面 做爬虫的小伙伴一般都绕不过代理IP这个问题. PS:如果还没遇到被封IP的场景,要不就是你量太小人家懒得理你,要不就是人家压根不在乎... 爬虫用户自己是没有能力维护一系列的代理服务器和代理 ...

  9. Python爬虫代理IP池

    目录[-] 1.问题 2.代理池设计 3.代码模块 4.安装 5.使用 6.最后 在公司做分布式深网爬虫,搭建了一套稳定的代理池服务,为上千个爬虫提供有效的代理,保证各个爬虫拿到的都是对应网站有效的代 ...

随机推荐

  1. MarkdownPad怎么显示表格

    工具 >选项 > Markdown >Markdown处理器 改为 “Markdown(扩展)”即可. 下载地址 http://www.xdowns.com/soft/1/95/20 ...

  2. c#中 uint--byte[]--char[]--string相互转换汇总

    原文:c#中 uint--byte[]--char[]--string相互转换汇总 在在做一些互操作的时候往往需要一些类型的相互转换,比如用c#访问win32api的时候往往需要向api中传入DWOR ...

  3. iOS_18_开关控制器_NavigationController_push道路_数据传输

    最后效果图: watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcHJlX2VtaW5lbnQ=/font/5a6L5L2T/fontsize/400/fill ...

  4. java 二维码原理以及用java实现的二维码的生成、解码(转)

    http://blog.csdn.net/songylwq/article/details/8643948 http://sjsky.iteye.com/blog/1136934 http://bbs ...

  5. opengl微发展理解

    1.什么是OpenGL? 一种程序,可以与界面和图形硬件交互作用.一个开放的标准 2.软件管道 请看上图 - Apllication层     表示你的程序(调用渲染命令.如opengl API) - ...

  6. Cocos2d-x 3.x plist+png 做动画

    ***************************************转载请注明出处:http://blog.csdn.net/lttree************************** ...

  7. STL中间set具体用法!!!!

    1.关于set C++ STL 之所以得到广泛的赞誉,也被非常多人使用.不仅仅是提供了像vector, string, list等方便的容器,更重要的是STL封装了很多复杂的数据结构算法和大量经常使用 ...

  8. MFC 盾webBrowser打开弹出的页面

    void CansDlg::NewWindow3Explorer1(LPDISPATCH* ppDisp, BOOL* Cancel, unsigned long dwFlags, LPCTSTR b ...

  9. sqlserver缓存程序-只能使用一次清除缓存计划

    plan cache非常大.将仅仅使用一次的缓存计划清除,而不用清除整个cache. declare @sid varbinary(64) declare cur01 cursor for selec ...

  10. ExtJS学习笔记:定义extjs类别

    类的定义 Ext.define('Cookbook.Vehicle', { Manufacturer: 'Aston Martin', Model: 'Vanquish', getDetails: f ...