SlideShare a Scribd company logo
1 of 29
Download to read offline
北京市海淀区学院南路12号京师科技大厦A座9层(100082)
Version 1.3.20151021
网络爬虫技术实战
刘胜 liusheng@umpay.com
『 联 动 技 术 大 讲 堂 』
2
1 大纲
 概念
 爬虫、反爬虫、反反爬虫
 动态网页
 访问代理:静态代理,动态代理
 URL处理:去重复、相似性
 架构
 Scrapy架构
 分布式爬虫架构
 实战
 爬虫语言
 网站死链接
 贷联盟
 安全漏洞预警
3
爬虫
 概念
 网络爬虫 WebCrawler
 网页蜘蛛 Spider
 网络机器人 Robot
 网络蚂蚁/蠕虫
 自动索引/模拟程序
 功能
 按照一定策略,自动地抓取万维网信息的程序或者脚本。
4
反爬虫
 技术
 手工识别和拒绝爬虫的访问
 通过识别爬虫的User-Agent和Referer等信息来拒绝爬虫
 通过网站流量统计系统和日志分析来识别爬虫
 网站的实时反爬虫防火墙实现
 通过JS算法,文字经过一定转换后才显示出来,容易被破解。
 通过JS不让用户复制,这对非专业人员有效,对技术人员/工程师来说
,没有任何效果。
 通过CSS隐藏技术,可见的页面样式和HTML里DIV结构不同,增加了
爬虫的难度,同时增加自己的维护难度。
 通过flash等插件技术(会被破解,对用户/移动终端不友好)。
 图片化
 A:将文字图片化,增加了维护成本,和移动端的可读性
 B:将标点符号图片化,再适当增加CSS混淆,这是一种较好的办法,不影响
搜索引擎收录,不影响用户使用。但影响爬虫,是一种较好的反爬虫方式,
某著名的文学网站采用了这种方法
5
反反爬虫
 原则——
 尽量模拟自然人使用浏览器的操作!
 要点——
 模拟User-Agent
 模拟Referer
 模拟登录  支持Cookie方式
 访问频率  固定延迟、随机延迟、异常延迟
 多IP地址  固定代理、动态代理
 模拟浏览器执行(js/ajax/css)  动态网页
6
动态网页
 静态网页(Web 1.0 时代)
 对象:基本HTML。
 实现:在python中可用urllib2或requests模块实现功能。
 动态网页(Web 2.0 时代)
 对象:分析经过js处理和ajax获取内容后的页面。
 实现——基于WebKit模块
 PYQT4,Splinter,Selenium
 实现——基于Headless Browser
 HtmlUnit,Phantomjs
 实战:
 以动静两种方式分析 www.sina.com.cn 主页的链接数。
7
访问代理
 实现改进——
 class MyHttp:
 class MyHttpProxy(MyHttp):
 # 随机多个代理 ,两种策略(random | polling)
 def setProxies(self, proxies=[]):
 class MyHttpProxy4File(MyHttpProxy):
 # 自动加载更新代理配置文件
 def setConfig(self, fname='proxies.ini'):
 class MyHttpProxy4Conf(MyHttpProxy4File):
 # 根据MyEnv更新配置
 def reConfig(self):
 其他——自动选择代理
 查找代理、验证代理、代理测速、…
8
优先策略
 IP地址搜索策略
 起始IP地址  遍历IP地址段
 深度优先搜索策略
 广度优先搜索策略
 最好优先搜索策略
 每次选择“最有价值”的链接进行访问
 预测候选URL与目标网页的相似度,或与主题的相关性,并选取评价
最好的一个或几个URL进行抓取。
 它只访问经过网页分析算法预测为“有用”的网页。
 问题:仅是一种局部最优搜索算法,在爬虫抓取路径上的很多
相关网页可能被忽略。
9
URL去重复
 方法
 Hash表
 URL压缩
 BloomFilter算法
 补充:
 Python中hashlib,自带多种hash函数,有MD5,sha1,
sha224,sha256,sha384,sha512。
 Python中,可以使用jaybaird提供的BloomFilter接口,或
者自己造轮子
10
URL相似性
 合成URL
 绝对地址 http://x.x.x/...
 相对地址 /path/index.html
 相对地址 login.html
 相对地址 <base href="http://x.x.x/umpay_cms/" />
 工具方法 from urlparse import urljoin
 检测URL
 检查host域名
 检查目录深度(以’/’分割)
 检查特征字符串:前缀,后缀
11
并发性
 多线程模型
 import threading
 from threading import Thread,Lock,stack_size
 from Queue import Queue
 多进程模型
 from multiprocessing import Pool
 from multiprocessing.dummy import Pool as Poo2
 协程模型(eventlet,gevent,Stackless)
 from eventlet import GreenPool
12
日志
 %(asctime)s 当前时间,默认格式是“2003-07-08 16:49:45,896”
 %(created)f 当前时间,用UNIX标准的表示时间的浮点数表示
 %(relativeCreated)d 输出日志信息时,自Logger创建以来的毫秒数
 %(name)s Logger的名字(注意其准确性)
 %(message)s 用户输出的消息
 %(filename)s 调用日志输出函数的模块的文件名
 %(module)s 调用日志输出函数的模块名 【与filename类似】
 %(pathname)s 调用日志输出函数的模块的完整路径名,可能没有
 %(funcName)s 调用日志输出函数的函数名 【无需在message中重复】
 %(lineno)d 调用日志输出函数的语句所在的代码行
 %(levelno)s 数字形式的日志级别
 %(levelname)s 文本形式的日志级别
 %(thread)d 线程ID。可能没有
 %(threadName)s 线程名。可能没有
 %(process)d 进程ID。可能没
class MyLog: …
FMT= '%(asctime)s %(process)5d:%(threadName)-12s %(module)12s %(lineno)4d
%(name)14s.%(funcName)-16s %(levelname)-7s - %(message)s‘
——MyLog要点——
设置basicConfig记文件
在Logger中记stdout
注意name的准确性
13
异常
 常见异常
1. HTTPError:HTTP Error 400: Bad Request
2. HTTPError:HTTP Error 404: Not Found
3. getaddrinfo [Errno 10054] 远程主机强迫关闭现有连接
4. URLError:<urlopen error [Errno 11004]
5. URLError: <urlopen error timed out>
6. timeout: timed out
 异常处理:
 不再重试 400,404
 延迟重试 10054,11004,urlopen time out
 重试多次 receive timeout
14
2 架构
 概念
 爬虫、反爬虫、反反爬虫
 动态网页
 动态代理
 URL处理:去重复、相似性
 架构
 Scrapy架构
 分布式爬虫架构
 实战
 爬虫语言
 网站死链接
 贷联盟
 安全漏洞预警
15
爬虫架构图(Scrapy)
16
分布式爬虫架构
1.任务模块
————
URL种子
URL新增
URL排序
URL去重
…
任务去重
任务分片
…
消息代理1
————
Topic-1
…
Topic-n
…
分布式消息队列集群
消息代理M
2.下载模块
————
分布式,多进程
多线程,多代理
3.解析模块
————
解析器1…n
4.输出模块
————
本地文件
MongoDB
MySql
新URL任务
5.管理模块:配置管理、进度监控,异常健康,模块更新,…
MySqlMongoDB
响
应
结
果
请
求
新URL
17
 概念
 爬虫、反爬虫、反反爬虫
 动态网页
 动态代理
 URL处理:去重复、相似性
 架构
 Scrapy架构
 分布式爬虫架构
 实战
 爬虫语言
 网站死链接
 贷联盟
 安全漏洞预警
3 实战
18
编程语言(Python)
 编程语言
 依赖管理(Python)
 Easy_install pip BitVector
 Pip install pyquery eventlet web.py flask scrapy
C# Java Python PHP
设计思路 面向对象 面向对象 面向对象 结构化
语言特点 强类型
+编译型
强类型
+编译型
+即时编译
弱类型/脚本语言
+编译型 pyc/pyo
+解释型 py
+即时编译 pypy
弱类型
+解释型
开放性 CLR JVM Cpython,Jython,PyPy
依赖管理 jar pip,eztools
类库 少 较多 丰富
典型用户 微软 。。。 Google
19
实战一:网站死链接
 功能:
 将开始URL加入队列;
 从队列获取URL;访问URL地址;分析响应中所有链接;加入队列;
 相关组件:
 页面解析器 from sgmllib import SGMLParser
 过滤器组件 from _bs4pylib import BloomFilter
 队列组件 from Queue import Queue
 线程组件 from threading import Thread,Lock
class Track4WebLinks: (略)
class UrlParser(SGMLParser):
def __init__(self, accepts, ignores):
def reset(self):
def feed(self, data):
def do_a(self,attrs):
def do_link(self,attrs):
def do_base(self,attrs):
def getUrls(self, urlbase, data):
class Track4WebLinks: (略)
class UrlParser4PQ():
def __init__(self, accepts, ignores):
def feed(self, data):
def getUrls(self, urlbase, data):
20
实战二:贷联盟失信人
 任务1:获取公开的P2P黑名单
 任务2:搜索P2P黑名单(按身份证号、按姓名各10万)
 任务3:搜索P2P黑名单、老赖、法院失信人(318万)
 任务4:遍历P2P黑名单
 任务5:招行610测试手机号
21
贷联盟1:公开信息
 任务1:获取公开的P2P黑名单
 输出: 爬取171页,总共2556条黑名单信息
 问题:
 1,未抓取来源页面信息 —— 预期天数?
 网站:拍拍贷, e速贷,都能贷,开开贷,大家贷,…
 2,未抓取未展现的信息 —— 存在75万?
 方法:1)注册;2)搜索;3)遍历(62^6=56800235584)
http://www.dailianmeng.com/p2pblacklist/index.html?P2pBlacklist_page=171
{"d_date": "2013-03-19", "w_addr": "", "d_num": "1年", "h_tel": "", "c_addr": "",
"h_addr": "", "id_old": "39岁", "w_tel": "", "id_birth": "1975-10-21", "debts":
"4800.00", "id": "321088197510217315", "id_addr": "江苏省扬州市江都市", "qqno": "",
"email": "394634614@qq.com", "i_url":
"http://www.ppdai.com/blacklistdetail/jdjuliang11", "d_amt2": "739.25", "d_amt1":
"2782.54", "w_name": "", "id_sex": "男", "name": "蒋余成", "url":
"http://www.dailianmeng.com/p2pblacklist/view/22Qfui.html", "i_src": "拍拍贷",
"mobile": "18952514868"}
22
贷联盟2:搜索20万
 任务2:搜索P2P黑名单
 输入:10万身份证号,找到1条记录(重复)
 输入: 10万姓名,找到600多条。
 找到了很多民间借贷失信人(老赖),法院失信人
 部分姓名重复,部分姓名不正常
 问题:大批量数据如何处理——?
 多并发:多线程、多进程、多协程
 多出口:动态代理,动态配置
 可中断:断点恢复
{"err": "HTTP Error 404: Not Found", "key": "?㈢?"}
{"err": "HTTP Error 404: Not Found", "key": "??亮"}
{"err": "HTTP Error 404: Not Found", "key": "?信行"}
{"url": "http://www.dailianmeng.com/p2pblacklist/view/baeyUv.html", "key":
"533522198710011010", "name": "陈安云", "mobile": "18988310000"}
http://www.dailianmeng.com/xinyong/q/370825196303140767.html
http://www.dailianmeng.com/xinyong/q/%E5%88%98%E6%96%8C.html
23
贷联盟3:搜索318万
 任务3:根据318万姓名搜索
 功能1:查找 P2P、老赖、法院黑名单网址并保存;
 功能2:解析P2P、老赖黑名单详情;
 功能3:中断恢复机制
 其他数据来源:
 12306数据131万
 开房数据2000万
{"url": "http://www.dailianmeng.com/p2pblacklist/view/ZVJ7Z3.html", "name": "刘斌",
"i_src": "拍拍贷", "mobile": "13315703369", "d_date": "2012-11-07", "h_addr": "河北省
黄骅市建设大街工行家属楼", "debts": "4800.00", "id": "132930198001020076", "id_old":
"35岁", "id_addr": "河北“, "email": "zjwuwk@sohu.com"}
{"url": "http://www.dailianmeng.com/xinyong/view/MvEvyi.html", "id":
"410703197902084019", "name": "*斌"}
{“url”: “http://www.dailianmeng.com/court_blacklist/view/zeqABr.html”, “id”:
“3522021981****3013”, “name”: “刘斌“}
24
贷联盟4:遍历方式
 任务4:分析网址规律,遍历所有网址
 分析1:
 三类黑名单:不同前缀
 字符:包含62字符
 组合:62^6=56800235584
 网址:568亿(*3)
 天数:*/24/3600/10=65741天
 等等。。。
http://www.dailianmeng.com/p2pblacklist/view/EBzqEv.html
http://www.dailianmeng.com/xinyong/view/MvEvyi.html
http://www.dailianmeng.com/court_blacklist/view/zeqABr.html
22Qfui 22a63u 22yiq2 263YFb 263iMb
26VJvy 26ZrEj 2A7Jzu 2ABB3u 2ANF7r
2AVniq 2EBbmy 2EVjay 2Ezqam 2I3Mju
2INfE3 2IZzy2 2IbQby 2Ibmyy 2MVjQf
2MbEna 2MjYny 2MzYJ3 2Q7jqq 2QFrIf
2QNjUn 2QZJbu 2QbMVn 2Qbyea 2QfUNv
2QnERz 2UBruu 2UNVVn 2UNbEz 2UjeYj
2UjiIz 2Uneya 2Uzm2m 2Y77Bb 2YFNj2
2YFVFb 2YVnAr 2YjMNz 2aIbyu 2aQ7Jr
2aUfiy 2aYvmy 2aeq6f 2auiim 2ayyum
…
 分析2:
 包含[2367,abefijmnqruvyz,ABEFIJMNQRUVYZ]…4+14+14
 排除[014589,cdghklopstwx,CDGHKLOPSTWX]
 组合:32^6=10亿,32^3=3.3万
 实验:22a,2Uj,…
25
贷联盟5:风险名单测试
 任务5:根据招行提供610个手机号,查找黑名单信息
 1)根据610个手机号,获得1050个名字(姓名)
 2)根据1050个名字,查找黑名单地址(P2P,老赖,法院)
 3)根据黑名单地址,获取45633条黑名单详情记录
 4)其他改进——
 +登录会话: 金额/借款日期/更新时间… (免费注册成为会员可见)
 +任务关联:任务对象url  任务对象dict
 +动态配置:
 +
26
实战三:安全漏洞预警
 任务:采用爬虫技术进行安全漏洞预警
 http://www.wooyun.org/ 乌云网
 http://loudong.360.cn/ 360补天
 http://www.cnvd.org.cn/ 国家信息安全漏洞共享平台
 https://www.vulbox.com/board 漏洞盒子
 …
 网址 http://www.wooyun.org/bugs/new_submit/page/5 最新提交
http://www.wooyun.org/bugs/new_public/page/5 最近公开
http://www.wooyun.org/bugs/new_alarm/page/5 最新预警
http://www.wooyun.org/bugs/new_confirm/page/5 最新确认
http://www.wooyun.org/bugs/new_unclaimed/page/5 最新
http://www.wooyun.org/bugs/page/3706 (全部)
http://loudong.360.cn/vul/list/page/2938 最新
http://loudong.360.cn/vul/list-more/state/5/page/2386 安全事件
http://loudong.360.cn/vul/list-more/state/0/page/629 通用漏洞
http://loudong.360.cn/vul/list-more/state/4/page/533 厂商确认
http://loudong.360.cn/vul/list-more/state/7/page/1461 付款漏洞
 http://loudong.360.cn/vul/list-more/state/8/page/6103 (全部)
27
结果展示输出
 需求1:漏洞预警系统
 发送电子邮件
 提供Web访问:
 功能:1)触发Checker检测;1)搜索结果
 Pip install web.py flask
 http://localhost:8888/
 需求2:漏洞检索平台
 提供全文搜索(ElasticSearch)
 http://10.10.67.45:9200/
 http://10.10.67.45:9200/_plugin/HQ/
 http://10.10.67.45:9200/_plugin/bigdesk/
 http://10.10.67.45:9200/_plugin/head/
28
4 小节
 爬虫技术评估
 爬虫效率 单节点;中断恢复;
 分布式规模 多节点;海量URL防重;
 反反爬虫技术 可变地址;固定/动态代理;动态网页
与人斗,其乐无穷…
29
X 结语和Q&AQ & A
参考——
问题——
 1,
 2,
 3,

More Related Content

What's hot

分布式爬虫
分布式爬虫分布式爬虫
分布式爬虫mysqlops
 
互联网创业服务器运维工具集
互联网创业服务器运维工具集互联网创业服务器运维工具集
互联网创业服务器运维工具集zhen chen
 
2010 b5 spam source detection at home
2010 b5 spam source detection at home2010 b5 spam source detection at home
2010 b5 spam source detection at homeCanaan Kao
 
11/14王團研究室—安全大師王團論毒 in台中
11/14王團研究室—安全大師王團論毒 in台中11/14王團研究室—安全大師王團論毒 in台中
11/14王團研究室—安全大師王團論毒 in台中T客邦
 
Fiddler使用技巧
Fiddler使用技巧Fiddler使用技巧
Fiddler使用技巧明 李
 
分布式爬虫
分布式爬虫分布式爬虫
分布式爬虫drewz lin
 
台科大網路鑑識課程 封包分析及中繼站追蹤
台科大網路鑑識課程 封包分析及中繼站追蹤台科大網路鑑識課程 封包分析及中繼站追蹤
台科大網路鑑識課程 封包分析及中繼站追蹤jack51706
 
網站程式資安白箱與黑箱檢測處理經驗分享
網站程式資安白箱與黑箱檢測處理經驗分享網站程式資安白箱與黑箱檢測處理經驗分享
網站程式資安白箱與黑箱檢測處理經驗分享Ying-Chun Cheng
 
安博士Asec 2010年8月安全报告
安博士Asec 2010年8月安全报告安博士Asec 2010年8月安全报告
安博士Asec 2010年8月安全报告ahnlabchina
 
Tdohconf 2017-ncku
Tdohconf 2017-nckuTdohconf 2017-ncku
Tdohconf 2017-nckujack51706
 
Php应用程序常见安全问题解析
Php应用程序常见安全问题解析Php应用程序常见安全问题解析
Php应用程序常见安全问题解析mysqlops
 
用戶端攻擊與防禦
用戶端攻擊與防禦用戶端攻擊與防禦
用戶端攻擊與防禦Taien Wang
 

What's hot (12)

分布式爬虫
分布式爬虫分布式爬虫
分布式爬虫
 
互联网创业服务器运维工具集
互联网创业服务器运维工具集互联网创业服务器运维工具集
互联网创业服务器运维工具集
 
2010 b5 spam source detection at home
2010 b5 spam source detection at home2010 b5 spam source detection at home
2010 b5 spam source detection at home
 
11/14王團研究室—安全大師王團論毒 in台中
11/14王團研究室—安全大師王團論毒 in台中11/14王團研究室—安全大師王團論毒 in台中
11/14王團研究室—安全大師王團論毒 in台中
 
Fiddler使用技巧
Fiddler使用技巧Fiddler使用技巧
Fiddler使用技巧
 
分布式爬虫
分布式爬虫分布式爬虫
分布式爬虫
 
台科大網路鑑識課程 封包分析及中繼站追蹤
台科大網路鑑識課程 封包分析及中繼站追蹤台科大網路鑑識課程 封包分析及中繼站追蹤
台科大網路鑑識課程 封包分析及中繼站追蹤
 
網站程式資安白箱與黑箱檢測處理經驗分享
網站程式資安白箱與黑箱檢測處理經驗分享網站程式資安白箱與黑箱檢測處理經驗分享
網站程式資安白箱與黑箱檢測處理經驗分享
 
安博士Asec 2010年8月安全报告
安博士Asec 2010年8月安全报告安博士Asec 2010年8月安全报告
安博士Asec 2010年8月安全报告
 
Tdohconf 2017-ncku
Tdohconf 2017-nckuTdohconf 2017-ncku
Tdohconf 2017-ncku
 
Php应用程序常见安全问题解析
Php应用程序常见安全问题解析Php应用程序常见安全问题解析
Php应用程序常见安全问题解析
 
用戶端攻擊與防禦
用戶端攻擊與防禦用戶端攻擊與防禦
用戶端攻擊與防禦
 

Viewers also liked

DevOpsDays Madison 2016 - Humane Treatment of On-Call Engineers (Ignite)
DevOpsDays Madison 2016 - Humane Treatment of On-Call Engineers (Ignite)DevOpsDays Madison 2016 - Humane Treatment of On-Call Engineers (Ignite)
DevOpsDays Madison 2016 - Humane Treatment of On-Call Engineers (Ignite)Aaron Aldrich
 
Lab7 Final Project EGRB 307
Lab7 Final Project EGRB 307Lab7 Final Project EGRB 307
Lab7 Final Project EGRB 307Khade Grant
 
Necto 16 training 11 infographics
Necto 16 training 11   infographicsNecto 16 training 11   infographics
Necto 16 training 11 infographicsPanorama Software
 
Madrinas del 7°a florencia cuevas
Madrinas del 7°a florencia cuevasMadrinas del 7°a florencia cuevas
Madrinas del 7°a florencia cuevasprofesoraudp
 
20141204支付清算行业分布式系统架构设计研究报告(草案)联动优势刘胜.doc
20141204支付清算行业分布式系统架构设计研究报告(草案)联动优势刘胜.doc20141204支付清算行业分布式系统架构设计研究报告(草案)联动优势刘胜.doc
20141204支付清算行业分布式系统架构设计研究报告(草案)联动优势刘胜.docliu sheng
 
Idcfクラウド 初心者の事始め(2)資料
Idcfクラウド 初心者の事始め(2)資料Idcfクラウド 初心者の事始め(2)資料
Idcfクラウド 初心者の事始め(2)資料Takako Miyagawa
 
Principales puertos del Perú (Parte 1/5)
Principales puertos del Perú (Parte 1/5)Principales puertos del Perú (Parte 1/5)
Principales puertos del Perú (Parte 1/5)TCIshare
 
Codeigniter4の比較と検証
Codeigniter4の比較と検証Codeigniter4の比較と検証
Codeigniter4の比較と検証ME iBotch
 
World trade in goods and services – major trends and developments
World trade in goods and services – major trends and developmentsWorld trade in goods and services – major trends and developments
World trade in goods and services – major trends and developmentsmeenee
 
Visual Design for Color Blind
Visual Design for Color BlindVisual Design for Color Blind
Visual Design for Color BlindSushumna 09
 
presentation Ellen Townsend
presentation Ellen Townsend presentation Ellen Townsend
presentation Ellen Townsend ECR2015
 
digitalSTROM Developer Day 2011: Wie digitalSTROM auf das iPhone kommt I
digitalSTROM Developer Day 2011: Wie digitalSTROM auf das iPhone kommt IdigitalSTROM Developer Day 2011: Wie digitalSTROM auf das iPhone kommt I
digitalSTROM Developer Day 2011: Wie digitalSTROM auf das iPhone kommt IdigitalSTROM.org
 

Viewers also liked (17)

Curriculum Vitae - Rama Narayana Murty
Curriculum Vitae - Rama Narayana MurtyCurriculum Vitae - Rama Narayana Murty
Curriculum Vitae - Rama Narayana Murty
 
DevOpsDays Madison 2016 - Humane Treatment of On-Call Engineers (Ignite)
DevOpsDays Madison 2016 - Humane Treatment of On-Call Engineers (Ignite)DevOpsDays Madison 2016 - Humane Treatment of On-Call Engineers (Ignite)
DevOpsDays Madison 2016 - Humane Treatment of On-Call Engineers (Ignite)
 
Lab7 Final Project EGRB 307
Lab7 Final Project EGRB 307Lab7 Final Project EGRB 307
Lab7 Final Project EGRB 307
 
Slideshow
SlideshowSlideshow
Slideshow
 
Microsoft dynamic CRM Development
Microsoft dynamic CRM  DevelopmentMicrosoft dynamic CRM  Development
Microsoft dynamic CRM Development
 
3.2 Years exp
3.2 Years exp3.2 Years exp
3.2 Years exp
 
UPnP and digitalSTROM
UPnP and digitalSTROMUPnP and digitalSTROM
UPnP and digitalSTROM
 
Necto 16 training 11 infographics
Necto 16 training 11   infographicsNecto 16 training 11   infographics
Necto 16 training 11 infographics
 
Madrinas del 7°a florencia cuevas
Madrinas del 7°a florencia cuevasMadrinas del 7°a florencia cuevas
Madrinas del 7°a florencia cuevas
 
20141204支付清算行业分布式系统架构设计研究报告(草案)联动优势刘胜.doc
20141204支付清算行业分布式系统架构设计研究报告(草案)联动优势刘胜.doc20141204支付清算行业分布式系统架构设计研究报告(草案)联动优势刘胜.doc
20141204支付清算行业分布式系统架构设计研究报告(草案)联动优势刘胜.doc
 
Idcfクラウド 初心者の事始め(2)資料
Idcfクラウド 初心者の事始め(2)資料Idcfクラウド 初心者の事始め(2)資料
Idcfクラウド 初心者の事始め(2)資料
 
Principales puertos del Perú (Parte 1/5)
Principales puertos del Perú (Parte 1/5)Principales puertos del Perú (Parte 1/5)
Principales puertos del Perú (Parte 1/5)
 
Codeigniter4の比較と検証
Codeigniter4の比較と検証Codeigniter4の比較と検証
Codeigniter4の比較と検証
 
World trade in goods and services – major trends and developments
World trade in goods and services – major trends and developmentsWorld trade in goods and services – major trends and developments
World trade in goods and services – major trends and developments
 
Visual Design for Color Blind
Visual Design for Color BlindVisual Design for Color Blind
Visual Design for Color Blind
 
presentation Ellen Townsend
presentation Ellen Townsend presentation Ellen Townsend
presentation Ellen Townsend
 
digitalSTROM Developer Day 2011: Wie digitalSTROM auf das iPhone kommt I
digitalSTROM Developer Day 2011: Wie digitalSTROM auf das iPhone kommt IdigitalSTROM Developer Day 2011: Wie digitalSTROM auf das iPhone kommt I
digitalSTROM Developer Day 2011: Wie digitalSTROM auf das iPhone kommt I
 

Similar to 20151021联动技术大讲堂35(刘胜)网络爬虫技术实战

Clientside attack using HoneyClient Technology
Clientside attack using HoneyClient TechnologyClientside attack using HoneyClient Technology
Clientside attack using HoneyClient TechnologyJulia Yu-Chin Cheng
 
99 botnet期末簡報
99 botnet期末簡報99 botnet期末簡報
99 botnet期末簡報Shi-Hwao Wang
 
網頁安全 Web security 入門 @ Study-Area
網頁安全 Web security 入門 @ Study-Area網頁安全 Web security 入門 @ Study-Area
網頁安全 Web security 入門 @ Study-AreaOrange Tsai
 
[xKungFoo2012]Web Service Hack
[xKungFoo2012]Web Service Hack[xKungFoo2012]Web Service Hack
[xKungFoo2012]Web Service Hackpnig0s pnig0s
 
智慧桌邊服務系統Smart restaurant service system
智慧桌邊服務系統Smart restaurant service system智慧桌邊服務系統Smart restaurant service system
智慧桌邊服務系統Smart restaurant service systemIttrainingIttraining
 
渗透测试思路技术与方法
渗透测试思路技术与方法渗透测试思路技术与方法
渗透测试思路技术与方法
 
张所勇:前端开发工具推荐
张所勇:前端开发工具推荐张所勇:前端开发工具推荐
张所勇:前端开发工具推荐zhangsuoyong
 
Qq game后台架构及开发介绍
Qq game后台架构及开发介绍Qq game后台架构及开发介绍
Qq game后台架构及开发介绍mysqlops
 
滲透測試基本技巧與經驗分享
滲透測試基本技巧與經驗分享滲透測試基本技巧與經驗分享
滲透測試基本技巧與經驗分享WEI CHIEH CHAO
 
OPOA in Action -- 使用MagixJS简化WebAPP开发
OPOA in Action -- 使用MagixJS简化WebAPP开发OPOA in Action -- 使用MagixJS简化WebAPP开发
OPOA in Action -- 使用MagixJS简化WebAPP开发leneli
 
Python 爬蟲
Python 爬蟲 Python 爬蟲
Python 爬蟲 Andy Yao
 
高性能远程调用解决方案
高性能远程调用解决方案高性能远程调用解决方案
高性能远程调用解决方案Ady Liu
 
A DIY Botnet Tracking System
A DIY Botnet Tracking SystemA DIY Botnet Tracking System
A DIY Botnet Tracking Systemlog0
 
Mobile app security
Mobile app securityMobile app security
Mobile app securitydrewz lin
 
恶意网页分析实战
恶意网页分析实战恶意网页分析实战
恶意网页分析实战Huang Toby
 
安博士Asec 2010年3月安全报告
安博士Asec 2010年3月安全报告安博士Asec 2010年3月安全报告
安博士Asec 2010年3月安全报告ahnlabchina
 
鹰眼下的淘宝_EagleEye with Taobao
鹰眼下的淘宝_EagleEye with Taobao鹰眼下的淘宝_EagleEye with Taobao
鹰眼下的淘宝_EagleEye with Taobaoterryice
 
PHP Coding Standard and 50+ Programming Skills
PHP Coding Standard and 50+ Programming SkillsPHP Coding Standard and 50+ Programming Skills
PHP Coding Standard and 50+ Programming SkillsHo Kim
 
雲端入侵 – 郵件攻擊與密碼竊取
雲端入侵 – 郵件攻擊與密碼竊取雲端入侵 – 郵件攻擊與密碼竊取
雲端入侵 – 郵件攻擊與密碼竊取OFMKT
 

Similar to 20151021联动技术大讲堂35(刘胜)网络爬虫技术实战 (20)

Clientside attack using HoneyClient Technology
Clientside attack using HoneyClient TechnologyClientside attack using HoneyClient Technology
Clientside attack using HoneyClient Technology
 
99 botnet期末簡報
99 botnet期末簡報99 botnet期末簡報
99 botnet期末簡報
 
網頁安全 Web security 入門 @ Study-Area
網頁安全 Web security 入門 @ Study-Area網頁安全 Web security 入門 @ Study-Area
網頁安全 Web security 入門 @ Study-Area
 
[xKungFoo2012]Web Service Hack
[xKungFoo2012]Web Service Hack[xKungFoo2012]Web Service Hack
[xKungFoo2012]Web Service Hack
 
智慧桌邊服務系統Smart restaurant service system
智慧桌邊服務系統Smart restaurant service system智慧桌邊服務系統Smart restaurant service system
智慧桌邊服務系統Smart restaurant service system
 
Hadoop ecosystem
Hadoop ecosystemHadoop ecosystem
Hadoop ecosystem
 
渗透测试思路技术与方法
渗透测试思路技术与方法渗透测试思路技术与方法
渗透测试思路技术与方法
 
张所勇:前端开发工具推荐
张所勇:前端开发工具推荐张所勇:前端开发工具推荐
张所勇:前端开发工具推荐
 
Qq game后台架构及开发介绍
Qq game后台架构及开发介绍Qq game后台架构及开发介绍
Qq game后台架构及开发介绍
 
滲透測試基本技巧與經驗分享
滲透測試基本技巧與經驗分享滲透測試基本技巧與經驗分享
滲透測試基本技巧與經驗分享
 
OPOA in Action -- 使用MagixJS简化WebAPP开发
OPOA in Action -- 使用MagixJS简化WebAPP开发OPOA in Action -- 使用MagixJS简化WebAPP开发
OPOA in Action -- 使用MagixJS简化WebAPP开发
 
Python 爬蟲
Python 爬蟲 Python 爬蟲
Python 爬蟲
 
高性能远程调用解决方案
高性能远程调用解决方案高性能远程调用解决方案
高性能远程调用解决方案
 
A DIY Botnet Tracking System
A DIY Botnet Tracking SystemA DIY Botnet Tracking System
A DIY Botnet Tracking System
 
Mobile app security
Mobile app securityMobile app security
Mobile app security
 
恶意网页分析实战
恶意网页分析实战恶意网页分析实战
恶意网页分析实战
 
安博士Asec 2010年3月安全报告
安博士Asec 2010年3月安全报告安博士Asec 2010年3月安全报告
安博士Asec 2010年3月安全报告
 
鹰眼下的淘宝_EagleEye with Taobao
鹰眼下的淘宝_EagleEye with Taobao鹰眼下的淘宝_EagleEye with Taobao
鹰眼下的淘宝_EagleEye with Taobao
 
PHP Coding Standard and 50+ Programming Skills
PHP Coding Standard and 50+ Programming SkillsPHP Coding Standard and 50+ Programming Skills
PHP Coding Standard and 50+ Programming Skills
 
雲端入侵 – 郵件攻擊與密碼竊取
雲端入侵 – 郵件攻擊與密碼竊取雲端入侵 – 郵件攻擊與密碼竊取
雲端入侵 – 郵件攻擊與密碼竊取
 

More from liu sheng

20160315内刊投稿(刘胜)区块链研究综述v1.1.0331
20160315内刊投稿(刘胜)区块链研究综述v1.1.033120160315内刊投稿(刘胜)区块链研究综述v1.1.0331
20160315内刊投稿(刘胜)区块链研究综述v1.1.0331liu sheng
 
20160230联动技术大讲堂xx(刘胜)区块链应用研究1初探v1.2.0305
20160230联动技术大讲堂xx(刘胜)区块链应用研究1初探v1.2.030520160230联动技术大讲堂xx(刘胜)区块链应用研究1初探v1.2.0305
20160230联动技术大讲堂xx(刘胜)区块链应用研究1初探v1.2.0305liu sheng
 
20160301内刊投稿(刘胜)区块链应用初探v1.doc
20160301内刊投稿(刘胜)区块链应用初探v1.doc20160301内刊投稿(刘胜)区块链应用初探v1.doc
20160301内刊投稿(刘胜)区块链应用初探v1.docliu sheng
 
20150820支付清算协会分布式架构研究与设计参考 v2.0820正式版
20150820支付清算协会分布式架构研究与设计参考 v2.0820正式版20150820支付清算协会分布式架构研究与设计参考 v2.0820正式版
20150820支付清算协会分布式架构研究与设计参考 v2.0820正式版liu sheng
 
20151113 uptc(刘胜)联动优势技术之路v6.1112.out
20151113 uptc(刘胜)联动优势技术之路v6.1112.out20151113 uptc(刘胜)联动优势技术之路v6.1112.out
20151113 uptc(刘胜)联动优势技术之路v6.1112.outliu sheng
 
20150925联动技术大讲堂xx(刘胜)初创企业知识产权保护和专利挖掘实践.out
20150925联动技术大讲堂xx(刘胜)初创企业知识产权保护和专利挖掘实践.out20150925联动技术大讲堂xx(刘胜)初创企业知识产权保护和专利挖掘实践.out
20150925联动技术大讲堂xx(刘胜)初创企业知识产权保护和专利挖掘实践.outliu sheng
 
20150211支付清算协会分布式架构研究与设计参考 v1.0.0211
20150211支付清算协会分布式架构研究与设计参考 v1.0.021120150211支付清算协会分布式架构研究与设计参考 v1.0.0211
20150211支付清算协会分布式架构研究与设计参考 v1.0.0211liu sheng
 
20150111专利知识和专利申请实践(刘胜)号码集合和网络认证.84p.pptx
20150111专利知识和专利申请实践(刘胜)号码集合和网络认证.84p.pptx20150111专利知识和专利申请实践(刘胜)号码集合和网络认证.84p.pptx
20150111专利知识和专利申请实践(刘胜)号码集合和网络认证.84p.pptxliu sheng
 
20141212联动优势(刘胜)北京公交一卡通平台架构演进参考.v1.1.1218
20141212联动优势(刘胜)北京公交一卡通平台架构演进参考.v1.1.121820141212联动优势(刘胜)北京公交一卡通平台架构演进参考.v1.1.1218
20141212联动优势(刘胜)北京公交一卡通平台架构演进参考.v1.1.1218liu sheng
 
20140818内刊投稿(刘胜)技术创新和专利申请.图文版v3.3
20140818内刊投稿(刘胜)技术创新和专利申请.图文版v3.320140818内刊投稿(刘胜)技术创新和专利申请.图文版v3.3
20140818内刊投稿(刘胜)技术创新和专利申请.图文版v3.3liu sheng
 
20141128(刘胜)UTC2014分布式和云服务的思考与实践——支付清算行业分布式架构的探索
20141128(刘胜)UTC2014分布式和云服务的思考与实践——支付清算行业分布式架构的探索20141128(刘胜)UTC2014分布式和云服务的思考与实践——支付清算行业分布式架构的探索
20141128(刘胜)UTC2014分布式和云服务的思考与实践——支付清算行业分布式架构的探索liu sheng
 
20140326联动优势数据访问层DAL架构和实践7(刘胜)工行交流
20140326联动优势数据访问层DAL架构和实践7(刘胜)工行交流20140326联动优势数据访问层DAL架构和实践7(刘胜)工行交流
20140326联动优势数据访问层DAL架构和实践7(刘胜)工行交流liu sheng
 
20120613联动优势数据访问层DAL架构和实践4(刘胜)最新特性
20120613联动优势数据访问层DAL架构和实践4(刘胜)最新特性20120613联动优势数据访问层DAL架构和实践4(刘胜)最新特性
20120613联动优势数据访问层DAL架构和实践4(刘胜)最新特性liu sheng
 
20130626联动优势数据访问层DAL架构和实践5(刘胜)数据分片和分页
20130626联动优势数据访问层DAL架构和实践5(刘胜)数据分片和分页20130626联动优势数据访问层DAL架构和实践5(刘胜)数据分片和分页
20130626联动优势数据访问层DAL架构和实践5(刘胜)数据分片和分页liu sheng
 

More from liu sheng (14)

20160315内刊投稿(刘胜)区块链研究综述v1.1.0331
20160315内刊投稿(刘胜)区块链研究综述v1.1.033120160315内刊投稿(刘胜)区块链研究综述v1.1.0331
20160315内刊投稿(刘胜)区块链研究综述v1.1.0331
 
20160230联动技术大讲堂xx(刘胜)区块链应用研究1初探v1.2.0305
20160230联动技术大讲堂xx(刘胜)区块链应用研究1初探v1.2.030520160230联动技术大讲堂xx(刘胜)区块链应用研究1初探v1.2.0305
20160230联动技术大讲堂xx(刘胜)区块链应用研究1初探v1.2.0305
 
20160301内刊投稿(刘胜)区块链应用初探v1.doc
20160301内刊投稿(刘胜)区块链应用初探v1.doc20160301内刊投稿(刘胜)区块链应用初探v1.doc
20160301内刊投稿(刘胜)区块链应用初探v1.doc
 
20150820支付清算协会分布式架构研究与设计参考 v2.0820正式版
20150820支付清算协会分布式架构研究与设计参考 v2.0820正式版20150820支付清算协会分布式架构研究与设计参考 v2.0820正式版
20150820支付清算协会分布式架构研究与设计参考 v2.0820正式版
 
20151113 uptc(刘胜)联动优势技术之路v6.1112.out
20151113 uptc(刘胜)联动优势技术之路v6.1112.out20151113 uptc(刘胜)联动优势技术之路v6.1112.out
20151113 uptc(刘胜)联动优势技术之路v6.1112.out
 
20150925联动技术大讲堂xx(刘胜)初创企业知识产权保护和专利挖掘实践.out
20150925联动技术大讲堂xx(刘胜)初创企业知识产权保护和专利挖掘实践.out20150925联动技术大讲堂xx(刘胜)初创企业知识产权保护和专利挖掘实践.out
20150925联动技术大讲堂xx(刘胜)初创企业知识产权保护和专利挖掘实践.out
 
20150211支付清算协会分布式架构研究与设计参考 v1.0.0211
20150211支付清算协会分布式架构研究与设计参考 v1.0.021120150211支付清算协会分布式架构研究与设计参考 v1.0.0211
20150211支付清算协会分布式架构研究与设计参考 v1.0.0211
 
20150111专利知识和专利申请实践(刘胜)号码集合和网络认证.84p.pptx
20150111专利知识和专利申请实践(刘胜)号码集合和网络认证.84p.pptx20150111专利知识和专利申请实践(刘胜)号码集合和网络认证.84p.pptx
20150111专利知识和专利申请实践(刘胜)号码集合和网络认证.84p.pptx
 
20141212联动优势(刘胜)北京公交一卡通平台架构演进参考.v1.1.1218
20141212联动优势(刘胜)北京公交一卡通平台架构演进参考.v1.1.121820141212联动优势(刘胜)北京公交一卡通平台架构演进参考.v1.1.1218
20141212联动优势(刘胜)北京公交一卡通平台架构演进参考.v1.1.1218
 
20140818内刊投稿(刘胜)技术创新和专利申请.图文版v3.3
20140818内刊投稿(刘胜)技术创新和专利申请.图文版v3.320140818内刊投稿(刘胜)技术创新和专利申请.图文版v3.3
20140818内刊投稿(刘胜)技术创新和专利申请.图文版v3.3
 
20141128(刘胜)UTC2014分布式和云服务的思考与实践——支付清算行业分布式架构的探索
20141128(刘胜)UTC2014分布式和云服务的思考与实践——支付清算行业分布式架构的探索20141128(刘胜)UTC2014分布式和云服务的思考与实践——支付清算行业分布式架构的探索
20141128(刘胜)UTC2014分布式和云服务的思考与实践——支付清算行业分布式架构的探索
 
20140326联动优势数据访问层DAL架构和实践7(刘胜)工行交流
20140326联动优势数据访问层DAL架构和实践7(刘胜)工行交流20140326联动优势数据访问层DAL架构和实践7(刘胜)工行交流
20140326联动优势数据访问层DAL架构和实践7(刘胜)工行交流
 
20120613联动优势数据访问层DAL架构和实践4(刘胜)最新特性
20120613联动优势数据访问层DAL架构和实践4(刘胜)最新特性20120613联动优势数据访问层DAL架构和实践4(刘胜)最新特性
20120613联动优势数据访问层DAL架构和实践4(刘胜)最新特性
 
20130626联动优势数据访问层DAL架构和实践5(刘胜)数据分片和分页
20130626联动优势数据访问层DAL架构和实践5(刘胜)数据分片和分页20130626联动优势数据访问层DAL架构和实践5(刘胜)数据分片和分页
20130626联动优势数据访问层DAL架构和实践5(刘胜)数据分片和分页
 

20151021联动技术大讲堂35(刘胜)网络爬虫技术实战

  • 2. 2 1 大纲  概念  爬虫、反爬虫、反反爬虫  动态网页  访问代理:静态代理,动态代理  URL处理:去重复、相似性  架构  Scrapy架构  分布式爬虫架构  实战  爬虫语言  网站死链接  贷联盟  安全漏洞预警
  • 3. 3 爬虫  概念  网络爬虫 WebCrawler  网页蜘蛛 Spider  网络机器人 Robot  网络蚂蚁/蠕虫  自动索引/模拟程序  功能  按照一定策略,自动地抓取万维网信息的程序或者脚本。
  • 4. 4 反爬虫  技术  手工识别和拒绝爬虫的访问  通过识别爬虫的User-Agent和Referer等信息来拒绝爬虫  通过网站流量统计系统和日志分析来识别爬虫  网站的实时反爬虫防火墙实现  通过JS算法,文字经过一定转换后才显示出来,容易被破解。  通过JS不让用户复制,这对非专业人员有效,对技术人员/工程师来说 ,没有任何效果。  通过CSS隐藏技术,可见的页面样式和HTML里DIV结构不同,增加了 爬虫的难度,同时增加自己的维护难度。  通过flash等插件技术(会被破解,对用户/移动终端不友好)。  图片化  A:将文字图片化,增加了维护成本,和移动端的可读性  B:将标点符号图片化,再适当增加CSS混淆,这是一种较好的办法,不影响 搜索引擎收录,不影响用户使用。但影响爬虫,是一种较好的反爬虫方式, 某著名的文学网站采用了这种方法
  • 5. 5 反反爬虫  原则——  尽量模拟自然人使用浏览器的操作!  要点——  模拟User-Agent  模拟Referer  模拟登录  支持Cookie方式  访问频率  固定延迟、随机延迟、异常延迟  多IP地址  固定代理、动态代理  模拟浏览器执行(js/ajax/css)  动态网页
  • 6. 6 动态网页  静态网页(Web 1.0 时代)  对象:基本HTML。  实现:在python中可用urllib2或requests模块实现功能。  动态网页(Web 2.0 时代)  对象:分析经过js处理和ajax获取内容后的页面。  实现——基于WebKit模块  PYQT4,Splinter,Selenium  实现——基于Headless Browser  HtmlUnit,Phantomjs  实战:  以动静两种方式分析 www.sina.com.cn 主页的链接数。
  • 7. 7 访问代理  实现改进——  class MyHttp:  class MyHttpProxy(MyHttp):  # 随机多个代理 ,两种策略(random | polling)  def setProxies(self, proxies=[]):  class MyHttpProxy4File(MyHttpProxy):  # 自动加载更新代理配置文件  def setConfig(self, fname='proxies.ini'):  class MyHttpProxy4Conf(MyHttpProxy4File):  # 根据MyEnv更新配置  def reConfig(self):  其他——自动选择代理  查找代理、验证代理、代理测速、…
  • 8. 8 优先策略  IP地址搜索策略  起始IP地址  遍历IP地址段  深度优先搜索策略  广度优先搜索策略  最好优先搜索策略  每次选择“最有价值”的链接进行访问  预测候选URL与目标网页的相似度,或与主题的相关性,并选取评价 最好的一个或几个URL进行抓取。  它只访问经过网页分析算法预测为“有用”的网页。  问题:仅是一种局部最优搜索算法,在爬虫抓取路径上的很多 相关网页可能被忽略。
  • 9. 9 URL去重复  方法  Hash表  URL压缩  BloomFilter算法  补充:  Python中hashlib,自带多种hash函数,有MD5,sha1, sha224,sha256,sha384,sha512。  Python中,可以使用jaybaird提供的BloomFilter接口,或 者自己造轮子
  • 10. 10 URL相似性  合成URL  绝对地址 http://x.x.x/...  相对地址 /path/index.html  相对地址 login.html  相对地址 <base href="http://x.x.x/umpay_cms/" />  工具方法 from urlparse import urljoin  检测URL  检查host域名  检查目录深度(以’/’分割)  检查特征字符串:前缀,后缀
  • 11. 11 并发性  多线程模型  import threading  from threading import Thread,Lock,stack_size  from Queue import Queue  多进程模型  from multiprocessing import Pool  from multiprocessing.dummy import Pool as Poo2  协程模型(eventlet,gevent,Stackless)  from eventlet import GreenPool
  • 12. 12 日志  %(asctime)s 当前时间,默认格式是“2003-07-08 16:49:45,896”  %(created)f 当前时间,用UNIX标准的表示时间的浮点数表示  %(relativeCreated)d 输出日志信息时,自Logger创建以来的毫秒数  %(name)s Logger的名字(注意其准确性)  %(message)s 用户输出的消息  %(filename)s 调用日志输出函数的模块的文件名  %(module)s 调用日志输出函数的模块名 【与filename类似】  %(pathname)s 调用日志输出函数的模块的完整路径名,可能没有  %(funcName)s 调用日志输出函数的函数名 【无需在message中重复】  %(lineno)d 调用日志输出函数的语句所在的代码行  %(levelno)s 数字形式的日志级别  %(levelname)s 文本形式的日志级别  %(thread)d 线程ID。可能没有  %(threadName)s 线程名。可能没有  %(process)d 进程ID。可能没 class MyLog: … FMT= '%(asctime)s %(process)5d:%(threadName)-12s %(module)12s %(lineno)4d %(name)14s.%(funcName)-16s %(levelname)-7s - %(message)s‘ ——MyLog要点—— 设置basicConfig记文件 在Logger中记stdout 注意name的准确性
  • 13. 13 异常  常见异常 1. HTTPError:HTTP Error 400: Bad Request 2. HTTPError:HTTP Error 404: Not Found 3. getaddrinfo [Errno 10054] 远程主机强迫关闭现有连接 4. URLError:<urlopen error [Errno 11004] 5. URLError: <urlopen error timed out> 6. timeout: timed out  异常处理:  不再重试 400,404  延迟重试 10054,11004,urlopen time out  重试多次 receive timeout
  • 14. 14 2 架构  概念  爬虫、反爬虫、反反爬虫  动态网页  动态代理  URL处理:去重复、相似性  架构  Scrapy架构  分布式爬虫架构  实战  爬虫语言  网站死链接  贷联盟  安全漏洞预警
  • 17. 17  概念  爬虫、反爬虫、反反爬虫  动态网页  动态代理  URL处理:去重复、相似性  架构  Scrapy架构  分布式爬虫架构  实战  爬虫语言  网站死链接  贷联盟  安全漏洞预警 3 实战
  • 18. 18 编程语言(Python)  编程语言  依赖管理(Python)  Easy_install pip BitVector  Pip install pyquery eventlet web.py flask scrapy C# Java Python PHP 设计思路 面向对象 面向对象 面向对象 结构化 语言特点 强类型 +编译型 强类型 +编译型 +即时编译 弱类型/脚本语言 +编译型 pyc/pyo +解释型 py +即时编译 pypy 弱类型 +解释型 开放性 CLR JVM Cpython,Jython,PyPy 依赖管理 jar pip,eztools 类库 少 较多 丰富 典型用户 微软 。。。 Google
  • 19. 19 实战一:网站死链接  功能:  将开始URL加入队列;  从队列获取URL;访问URL地址;分析响应中所有链接;加入队列;  相关组件:  页面解析器 from sgmllib import SGMLParser  过滤器组件 from _bs4pylib import BloomFilter  队列组件 from Queue import Queue  线程组件 from threading import Thread,Lock class Track4WebLinks: (略) class UrlParser(SGMLParser): def __init__(self, accepts, ignores): def reset(self): def feed(self, data): def do_a(self,attrs): def do_link(self,attrs): def do_base(self,attrs): def getUrls(self, urlbase, data): class Track4WebLinks: (略) class UrlParser4PQ(): def __init__(self, accepts, ignores): def feed(self, data): def getUrls(self, urlbase, data):
  • 20. 20 实战二:贷联盟失信人  任务1:获取公开的P2P黑名单  任务2:搜索P2P黑名单(按身份证号、按姓名各10万)  任务3:搜索P2P黑名单、老赖、法院失信人(318万)  任务4:遍历P2P黑名单  任务5:招行610测试手机号
  • 21. 21 贷联盟1:公开信息  任务1:获取公开的P2P黑名单  输出: 爬取171页,总共2556条黑名单信息  问题:  1,未抓取来源页面信息 —— 预期天数?  网站:拍拍贷, e速贷,都能贷,开开贷,大家贷,…  2,未抓取未展现的信息 —— 存在75万?  方法:1)注册;2)搜索;3)遍历(62^6=56800235584) http://www.dailianmeng.com/p2pblacklist/index.html?P2pBlacklist_page=171 {"d_date": "2013-03-19", "w_addr": "", "d_num": "1年", "h_tel": "", "c_addr": "", "h_addr": "", "id_old": "39岁", "w_tel": "", "id_birth": "1975-10-21", "debts": "4800.00", "id": "321088197510217315", "id_addr": "江苏省扬州市江都市", "qqno": "", "email": "394634614@qq.com", "i_url": "http://www.ppdai.com/blacklistdetail/jdjuliang11", "d_amt2": "739.25", "d_amt1": "2782.54", "w_name": "", "id_sex": "男", "name": "蒋余成", "url": "http://www.dailianmeng.com/p2pblacklist/view/22Qfui.html", "i_src": "拍拍贷", "mobile": "18952514868"}
  • 22. 22 贷联盟2:搜索20万  任务2:搜索P2P黑名单  输入:10万身份证号,找到1条记录(重复)  输入: 10万姓名,找到600多条。  找到了很多民间借贷失信人(老赖),法院失信人  部分姓名重复,部分姓名不正常  问题:大批量数据如何处理——?  多并发:多线程、多进程、多协程  多出口:动态代理,动态配置  可中断:断点恢复 {"err": "HTTP Error 404: Not Found", "key": "?㈢?"} {"err": "HTTP Error 404: Not Found", "key": "??亮"} {"err": "HTTP Error 404: Not Found", "key": "?信行"} {"url": "http://www.dailianmeng.com/p2pblacklist/view/baeyUv.html", "key": "533522198710011010", "name": "陈安云", "mobile": "18988310000"} http://www.dailianmeng.com/xinyong/q/370825196303140767.html http://www.dailianmeng.com/xinyong/q/%E5%88%98%E6%96%8C.html
  • 23. 23 贷联盟3:搜索318万  任务3:根据318万姓名搜索  功能1:查找 P2P、老赖、法院黑名单网址并保存;  功能2:解析P2P、老赖黑名单详情;  功能3:中断恢复机制  其他数据来源:  12306数据131万  开房数据2000万 {"url": "http://www.dailianmeng.com/p2pblacklist/view/ZVJ7Z3.html", "name": "刘斌", "i_src": "拍拍贷", "mobile": "13315703369", "d_date": "2012-11-07", "h_addr": "河北省 黄骅市建设大街工行家属楼", "debts": "4800.00", "id": "132930198001020076", "id_old": "35岁", "id_addr": "河北“, "email": "zjwuwk@sohu.com"} {"url": "http://www.dailianmeng.com/xinyong/view/MvEvyi.html", "id": "410703197902084019", "name": "*斌"} {“url”: “http://www.dailianmeng.com/court_blacklist/view/zeqABr.html”, “id”: “3522021981****3013”, “name”: “刘斌“}
  • 24. 24 贷联盟4:遍历方式  任务4:分析网址规律,遍历所有网址  分析1:  三类黑名单:不同前缀  字符:包含62字符  组合:62^6=56800235584  网址:568亿(*3)  天数:*/24/3600/10=65741天  等等。。。 http://www.dailianmeng.com/p2pblacklist/view/EBzqEv.html http://www.dailianmeng.com/xinyong/view/MvEvyi.html http://www.dailianmeng.com/court_blacklist/view/zeqABr.html 22Qfui 22a63u 22yiq2 263YFb 263iMb 26VJvy 26ZrEj 2A7Jzu 2ABB3u 2ANF7r 2AVniq 2EBbmy 2EVjay 2Ezqam 2I3Mju 2INfE3 2IZzy2 2IbQby 2Ibmyy 2MVjQf 2MbEna 2MjYny 2MzYJ3 2Q7jqq 2QFrIf 2QNjUn 2QZJbu 2QbMVn 2Qbyea 2QfUNv 2QnERz 2UBruu 2UNVVn 2UNbEz 2UjeYj 2UjiIz 2Uneya 2Uzm2m 2Y77Bb 2YFNj2 2YFVFb 2YVnAr 2YjMNz 2aIbyu 2aQ7Jr 2aUfiy 2aYvmy 2aeq6f 2auiim 2ayyum …  分析2:  包含[2367,abefijmnqruvyz,ABEFIJMNQRUVYZ]…4+14+14  排除[014589,cdghklopstwx,CDGHKLOPSTWX]  组合:32^6=10亿,32^3=3.3万  实验:22a,2Uj,…
  • 25. 25 贷联盟5:风险名单测试  任务5:根据招行提供610个手机号,查找黑名单信息  1)根据610个手机号,获得1050个名字(姓名)  2)根据1050个名字,查找黑名单地址(P2P,老赖,法院)  3)根据黑名单地址,获取45633条黑名单详情记录  4)其他改进——  +登录会话: 金额/借款日期/更新时间… (免费注册成为会员可见)  +任务关联:任务对象url  任务对象dict  +动态配置:  +
  • 26. 26 实战三:安全漏洞预警  任务:采用爬虫技术进行安全漏洞预警  http://www.wooyun.org/ 乌云网  http://loudong.360.cn/ 360补天  http://www.cnvd.org.cn/ 国家信息安全漏洞共享平台  https://www.vulbox.com/board 漏洞盒子  …  网址 http://www.wooyun.org/bugs/new_submit/page/5 最新提交 http://www.wooyun.org/bugs/new_public/page/5 最近公开 http://www.wooyun.org/bugs/new_alarm/page/5 最新预警 http://www.wooyun.org/bugs/new_confirm/page/5 最新确认 http://www.wooyun.org/bugs/new_unclaimed/page/5 最新 http://www.wooyun.org/bugs/page/3706 (全部) http://loudong.360.cn/vul/list/page/2938 最新 http://loudong.360.cn/vul/list-more/state/5/page/2386 安全事件 http://loudong.360.cn/vul/list-more/state/0/page/629 通用漏洞 http://loudong.360.cn/vul/list-more/state/4/page/533 厂商确认 http://loudong.360.cn/vul/list-more/state/7/page/1461 付款漏洞  http://loudong.360.cn/vul/list-more/state/8/page/6103 (全部)
  • 27. 27 结果展示输出  需求1:漏洞预警系统  发送电子邮件  提供Web访问:  功能:1)触发Checker检测;1)搜索结果  Pip install web.py flask  http://localhost:8888/  需求2:漏洞检索平台  提供全文搜索(ElasticSearch)  http://10.10.67.45:9200/  http://10.10.67.45:9200/_plugin/HQ/  http://10.10.67.45:9200/_plugin/bigdesk/  http://10.10.67.45:9200/_plugin/head/
  • 28. 28 4 小节  爬虫技术评估  爬虫效率 单节点;中断恢复;  分布式规模 多节点;海量URL防重;  反反爬虫技术 可变地址;固定/动态代理;动态网页 与人斗,其乐无穷…
  • 29. 29 X 结语和Q&AQ & A 参考—— 问题——  1,  2,  3,