- 1 -
互联网客票查询的爬虫行为检测方法研究
周岳骞,林友芳**
(北京交通大学 计算机与信息技术学院,北京 100044)
摘要:随着互联网客票查询的快速普及,网络爬虫程序的检测变得日益重要。本文提出了互5
联网客票查询渠道的查询行为建模方法。除了利用查询时间特征之外,分别从查询内容的排
列组合方式、信息熵以及状态分布三个方面提取了基于内容的查询行为特征。然后基于该查
询行为模型,通过定义查询曲线的三维离群度,来构建客票查询行为有监督分类模型。并通
过实际数据集验证了本文提出的模型的有效性 。
关键词:互联网客票查询;渠道;爬虫检测;行为建模 10
中图分类号:TP391
Web robot detection of passenger ticket query
ZHOU Yueqian, LIN Youfang
(School of Computer and Information Technology, Beijing Jiaotong University, City 100044) 15
Abstract: With the rapid popularization of Internet passenger ticket query, web crawlers detection
becomes increasingly important. This paper present a web passenger ticket query behavioral modeling
method . In addition to using query time characteristics the method extract the content based query
behavior characteristics respectively from 3 aspect: the permutation and combination way, the
information entropy and the state distribution. Based on the query behavioral model this paper build the 20
passenger ticket query behavior supervised classification model with definition of the
three-dimensional stray of query curve, and verify the effectiveness of the proposed model through
actual data sets.
Key words: Web Passenger Ticket; Query Channel; Web Robot Detection; Behavioral Modeling
25
0 引言
随着互联网的高速发展,旅客的购票行为模式发生了巨大改变。在 2015 年春运期间,
12306 网站的日访问量达到破纪录的 297 亿次,当天共发售火车票 万张,其中互联网
发售 万张,占比 59%。在民航领域,中国民航信息网络股份有限公司的后台系统承载
了来自全国所有渠道的机票信息查询,在 2015 年 1 月,系统平均每小时收到来自互联网渠30
道的查询约 6 万条,占总查询量的 65%。
互联网客票查询与预订的普及,在方便了旅客出行的同时也带来了网络爬虫在客票信息
查询中的泛滥,大量以比价、占座为目的的网络爬虫程序频繁地访问客票信息查询服务系统,
对服务器产生了巨大的访问压力,同时也影响到了普通旅客的正常查询需求。如何发现并且
屏蔽这些网络爬虫成为票务分销系统亟待解决的问题。 35
传统的网页爬虫检测方法分为实时和离线检测两大类[1],一般使用三类不同方法:基于
查询来源信息的网络爬虫发现方法[2-3]、基于查询行为模式的网络爬虫发现方法[4-6]以及基于
概率学模型的网络爬虫发现方法[7-8]。由于网页内容复杂多样、而且检索和访问的方式也不
固定,传统网页爬虫发现算法难以从内容上深入分析爬虫的行为特征,只能根据发起检索的
时间频率特征进行研究。而交通客票检索相比一般的网页检索具有其特殊性:查询规则单一、40
查询需求明确、查询数据集中。因此,本文研究了针对互联网客票信息爬虫的探测与发现方
- 2 -
法。
本文重点研究了爬虫程序的离线检测,结合传统的爬虫行为模式研究与有监督的学习方
法,通过对大量的客票查询数据进行统计观察,研究正常旅客与爬虫机器人在查询客票时的
不同行为模式。然后构建一种结合查询内容与查询时间特征的互联网客票查询行为模型,并45
通过有监督的分类方法,检测互联网客票爬虫程序。最终将利用某客运商提供的大量客票查
询日志数据,通过实验验证本文提出的方法的有效性。
1 问题定义
为了便于对研究的问题进行形式化,我们总结了机票、火车票等交通客票查询的一般特
征,给出了如下定义: 50
定义 1:客票查询渠道。发起交通客票查询请求的主体为自然旅客或者爬虫程序,所有
的查询请求通过不同的渠道汇总到存储票务信息的后台系统中,这些渠道包括客票代理人、
航公公司官网、第三方网站等[9]。后台系统为了便于渠道管理以及负载均衡,往往为每个渠
道分配了 1 个或者多个渠道 ID。由于后台系统往往无法直接获取到查询主体的 IP 等信息,
因此本文将研究对象限定为由渠道 ID 唯一标识的查询渠道上。 55
定义 2:交通产品集。客票查询请求的查询对象通常是某个交通产品集(如某日期出发
的所有列车),交通产品集通常可以由多个维度进行描述,由于不同类型的交通产品具备的
维度不尽相同,因此我们只采用其中最通用的 3 个维度对交通产品集进行定义,包括:出发
地、目的地、出发日期。其余维度如:航空公司(只在机票查询中出现)、航班号或者火车
车次等,必要时可作为补充信息使用。 60
定义 3:会话(Session)。由于客票查询渠道并非由某一个查询主体固定使用,其中往
往混杂了来自不同查询主体的行为,因此其查询行为模式经常发生变化。为了研究相对固定
的渠道查询行为模式,我们将某一渠道在较短时间内的连续查询定义为一次会话,通常认为
一次会话中的查询请求具有相同或者相似的行为模式。参考传统的网页爬虫研究方法中的定
义,我们将同一渠道中间隔时间不超过阈值T 的连续查询请求定义到同一次会话中,T 的值65
可以根据具体场景进行调整。由于在我国的机票和火车票查询中都有订单保留 45 分钟的规
定(用户选定的车票在支付前保留 45 分钟),因此在本研究中我们将T 的值固定为 45 分钟。
问题定义:本文研究的核心问题就是如何构建渠道在每次会话中的查询行为模型,发现
自然旅客查询与爬虫机器人查询的不同行为特征,从而得到一种客票爬虫检测方法。我们用
集合P 表示所有的渠道, ,jil 表示来自渠道 ip 的第j 次查询请求,每次请求包括四个维度70
的信息 ,j ,j ,j ,j( ), ( ), ( ), ( )i i i it l o l d l fd l 分别表示查询的发起时间、出发地、目的地、出发
日期。集合 ,i kS 表示渠道 ip 发起的第k 次会话,根据对会话的定义可知:
,1 ,1i il S∈
if ,j ,i i kl S∈ and ,j 1 ,j( ) ( ) Ti it l t l+ − ≤
then ,j 1 ,i i kl S+ ∈ 75
else ,j 1 , 1i i kl S+ +∈
查询行为建模的目的就是构建特征集 1 2V {v ,v , ,v }n= … ,用于描述会话S 内所有查
询共同表现出来的行为特征,即S V→ 。基于该行为特征集,我们就可以通过人工定义规
- 3 -
中国科技论文在线
则或者有监督的学习方法,得到可以用于检测某一会话的真实请求主体是否为网络爬虫的方
法,即 1 2(S) (v ,v , ,v )nfΦ = … 。 80
2 查询行为建模
自然旅客与爬虫程序在发起客票查询时,由于其自然属性和查询目的的差异,表现出不
同的行为模式,这种差异主要反映在两个方面,一方面是查询发起的时间频率差异,另一方
面是查询的内容差异。因此我们的查询行为建模也从这两方面入手,分别构建查询行为的时
间频率特征和查询内容特征。 85
查询行为的时间频率特征
一般来说,自然旅客在进行客票信息查询时,需要一次性获取的信息是有限的,因此不
会进行长时间的连续查询。另一方面由于自然旅客在搜索后需要阅读获取得到的返回结果,
因此发起查询请求的频率不会过高。在实际场景中,自然旅客在进行查询时往往会快速进行
多次查询来获取足够多的信息,然后需要经过一段时间阅读和理解这部分信息,因此自然旅90
客的查询频率往往是高低交错的,而不会始终维持同一频率进行查询。
而爬虫程序往往表现出与自然旅客相反的特征,由于爬虫程序的主要目的就是通过机器
的长时间高频率的检索来获取大量数据,因此爬虫程序发起的会话往往持续时间长,查询频
率高。由于爬虫机器人并不需要时间来阅读和理解数据,因此在查询过程中能够保持稳定的
查询频率。 95
我们可通过一次会话的总时长、会话中的平均查询频率、会话中的前后查询时间间隔方
差这 3 个特征来描述一次会话的时间频率特性。
会话时长属性:
, , , , , , ,( ) max( ( ) - ( )| , )i k i x i y i x i k i y i kSesLen S t l t l l S l S= ∈ ∈
平均查询频率: 100
, , ,( ) / ( )i k i k i kSesFreq S S SesLen S=
查询时间间隔方差:
, ,j 1 ,j ,j , ,j 1 ,( ) var({ ( ) ( )| , })i k i i i i k i i kVarTimeGap S t l t l l S l S+ += − ∈ ∈
除每次会话本身的时间频率特征以外,爬虫程序在一个渠道中的活跃时间往往不限于一
次会话,而是会在连续多次会话中都表现出扒数行为特征,因此渠道整体的查询时间频率特105
征对于爬虫程序的检测也很有参考意义。我们通过渠道活跃时间比、渠道平均会话时长、渠
道会话时长方差、渠道平均会话时间间隔、渠道会话时间间隔方差来反映一个渠道在连续多
次会话中的整体时间频率特征。我们定义了 5 个渠道整体时间频率特征。
渠道活跃时间比:
, , , , , , , ,( ) max( - | , ) / max( - )i i m i n i m i j i n i j i m i n
j
ActTimeRat p l l l S l S l l= ∈ ∈∑ 110
渠道平均会话时长:
,es ( ) ( ( ))i i xAvgS Dura p avg SesLen S=
渠道会话时长方差:
,es ( ) var( ( ))i i xVarS Dura p SesLen S=
- 4 -
中国科技论文在线
渠道平均会话时间间隔: 115
, , , , , , -1s ( ) (min( ( )| ) - min( ( )| )i i x i x i j i x i x i jAvgSe Gap p avg t l l S t l l S= ∈ ∈
渠道会话时间间隔方差:
, , , , , , -1( ) var(min( ( )| ) - min( ( )| )i i x i x i j i x i x i jVarSesGap p t l l S t l l S= ∈ ∈
查询行为的内容特征
查询时间频率特征作为传统的网页爬虫程序发现方法中的重要维度,能够在部分场景中120
有效区分出正常人查询与爬虫程序的查询行为。但是随着爬虫程序越来越智能,正常人的查
询时间频率特征也越来越容易被爬虫程序所模仿,因此这种方法的准确率存在一定瓶颈。
而在查询内容方面,由于自然旅客的查询目的与爬虫程序的查询目的有着本质的不同,
自然旅客发起的查询是以服务于某一次具体的出行为目的,往往会在相同或者相关的内容上
进行反复查询和比较,而爬虫程序则是为了在短时间内大量采集数据,因此爬虫程序发起的125
查询往往会尽量覆盖更多不同的内容。
互联网客票查询由于其特殊性,查询内容一般遵循固定的规则,即以出发地(original,
以下简写为o ),目的地(destination,以下简写为d ),出发日期(flight date,以下简写
为fd )组合成为一条查询的基本条件。因此我们从查询内容的这 3 个维度出发,研究爬虫
程序与正常旅客在查询内容上表现出的不同行为特征,由于查询的出发地和目的地共同组成130
了一次出行的线路,因此我们将 &o d 作为一个额外的组合维度。
基于以上分析,我们分别从 4 个不同的维度研究爬虫程度与正常旅客的查询行为差异:
综合离散度:以一次会话中三个维度的实际组合数量作为分子,以 , ,o d fd 的所有可
能的组合方式数量作为分母,将该比值定义为该会话的综合离散度,计算公式如下:
| ( , , )|
| ( )| * | ( )| * | ( )|
distinct o d fd
distinct o distinct d distinct fd 135
综合离散度反映了一次会话中的所有查询是否尽可能多地覆盖了所有可能获取到的信
息种类。综合离散度的取值范围是 (0,1⎤⎦,当该值越接近 1 表示会话中所有查询覆盖的内容
越广泛,更加接近爬虫程序的行为模式。
信息熵[10]:假设一个集合中包含 N 种类型的元素共 I 个,每种类型的元素数量分别为
1 2, , , nU U U… ,信息熵的计算公式为: 140
1
- log
n
i
i
i
UU I=∑
信息熵反映了该集合所有元素表示的信息的不确定性程度,信息熵越大表示该集合的不
确定程度越高。由于正常旅客的查询目的较为确定,一般都与某个 ,o d 或者fd 相关,因此
信息熵较小,而爬虫程序获取信息没有明确的目的,因此信息熵较大。我们分别从 , ,o d fd
和 &o d 4 个维度计算会话中所有查询的信息熵,作为特征属性衡量会话所包含信息的不确145
定程度。
方差:受到节假日和地域性事件的驱动,正常旅客发起的查询总是不均匀地分布在各个
维度上,集中于某些特定的地域或者日期,而在其余地域或者日期分布较少。而爬虫程序则
恰恰相反,其查询模式倾向于均匀地遍历各个地域和各个日期。因此我们分别计算会话在
, ,o d fd 和 &o d 4 个维度上查询量分布的方差作为特征属性,衡量会话查询内容分布的均150
- 5 -
中国科技论文在线
匀程度,方差越小表示查询内容在该维度的分布越均匀。
由此我们可以得到 9 个不同的基于查询内容特征属性:综合离散度、ORIGINAL 信息
熵、DESTINATION 信息熵、FLIGHT DATE 信息熵、O&D 信息熵、ORIGINAL 方差、
DESTINATION 方差、FLIGHT DATE 方差、O&D 方差。
3 查询行为分类 155
本节将详细介绍如何对不同的查询渠道进行分类。
三维离群度
由于客票查询领域的渠道具有一定的泛用性,一个渠道往往会同时向多个查询来源提供
服务,因此在渠道发起的一次会话期间除了某个查询主体(查询量占比最大的查询源)之外,
还会混杂有许多其他来源的查询,从而会产生许多噪音数据。 160
为了准确发现渠道中的查询主体,筛除噪音数据,本文对渠道查询量的分布特点进行了
大量统计观察,发现在一个渠道中,查询主体的查询量往往是较为稳定的,而查询主体外的
查询源则呈现锯齿状,在少数查询量极高的峰值外,大部分时间查询量都极低。由于非主体
查询源的查询量峰值可以通过查询渠道、查询时间、查询对象三个维度的对比被发现出来,
因此本文定义了三维离群度的概念,用来发现渠道中的异常查询量,从而筛除大部分噪音数165
据。
我们以 &o d 为查询对象的最小单元,以小时为查询时间的最小单元,对三维离群度的
定义如下:
设 , ,i j kC 为第 i 个渠道在第 j 小时对第 k 个的 &o d 查询次数,那么在查询对象维的离
群度计算公式为: 170
, , , ,1
2
, , , ,1 1
1
1 1( )
N
i j k i j kk
N N
i j k i j kk k
C CN
C CN N
=
= =
−
−
∑
∑ ∑
同理,查询渠道维度和查询时间维度的离群度计算方法与此类似。每个维度分别代表了
某个渠道在某个时间对某个查询对象的查询量异常程度。当离群度越接近与 0 时,表示该维
度上查询量越稳定。离群度越高或者越低都表示该维度上的查询量异常程度越高。
对三维离群度分别或者综合进行分析,就可以发现渠道查询中的异常成分,从而筛除非175
主体查询来源产生的噪音数据,帮助我们准确定位渠道中的查询主体。
渠道查询行为分类框架
我们利用三个维度的离群度对渠道查询行为进行分类。由于离群度属性在每个维度上都
呈现以 0 为均值的正态分布,因此我们设定一个阈值 ( )0,1γ ∈ ,如果渠道查询行为在三个
维度上都处于以 0 为中心的γ 范围以内,则该查询是来自主体查询源的正常查询行为,否则180
是来自非主体查询源的异常查询。本文将三维离群度发现的异常查询作为噪音数据排除,然
后对正常查询使用有监督的分类方法,通过已知的部分监督数据训练构建查询行为分类器。
总体上,渠道查询行为分类框架如图 1 所示:
- 6 -
中国科技论文在线
图 1 分类模型框架图 185
Fig. 1 Classification model frame figure
4 实验与评价
数据集
本文的研究与实验数据集来自于某客运商提供的加密用户查询数据集,数据集包含了某
个月内该系统接收到的来自互联网渠道对全国所有客运班次的查询记录,包含渠道 ID、出190
发地、目的地、出行日期等字段。
通过客运商对部分查询渠道的调查,我们获取到了部分渠道的爬虫程序运行记录,在此
基础上标注了这些渠道的查询行为分类样本集。我们将数据集中最后一天的查询数据作为测
试集,其他日期作为训练集,构建了上一节所述的分类模型,并验证了模型的准确性。
本文所用的数据集统计信息如表 1 和表 2 所示。 195
表 1 实验数据集统计信息表
Tab. 1 Experimental data sets statistics table
统计维度 统计结果
当天渠道查询总量(次) 19117590
渠道数量(个) 42672
会话次数(次) 134479
平均每次会话时长(秒)
平均每次会话查询量(次)
表 2 训练数据集统计信息表
Tab. 2 Training data sets statistics table 200
统计维度 统计结果
带有爬虫程序启动记录的渠道数(个) 100
带有标签的会话次数(次) 527
被标注为爬虫程序发起的会话次数(此) 223
被标注为正常旅客发起的会话次数(次) 304
- 7 -
中国科技论文在线
实验结果分析
下面采用 5 重交叉验证,运用多种不同分类算法对本文提出的分类框架进行验证。以准
确率、回归率、F1 值作为验证指标,从 3 个方面对模型进行验证:不同分类算法比较、三
维离群度阈值γ 对结果的影响、时间频率特征与查询内容特征比较。
不同分类算法比较 205
为比较不同的分类算法在本文提出的分类框架中的准确性,我们选用了 5 种不同的分类
算法,分别在 3 种不同的γ 取值下验证它们的准确率、召回率和 F1 值,最终的实验结果如
表 3 和图 2 所示。
表 3 不同算法结果比较表
Tab. 3 Different algorithms comparison table 210
γ = γ = γ =
准确率 召回率 F1 值 准确率 召回率 F1 值 准确率 召回率 F1 值
贝叶斯网络
朴素贝叶斯
支持向量机
逻辑回归
J48 决策树
图 2 不同算法结果比较图
Fig. 2 Different algorithms comparison figure
215
从表 3 和图 2 可以看出,在不同的γ 取值下,J48 的准确率、召回率和 F1 值都有比较
明显的优势,因此后面都将选用 J48 作为分类框架中的分类算法。同时我们也发现,在 3 种
不同的γ 取值下,各种分类算法的准确率和召回率都有明显的变化,准确率均与γ 值负相关、
召回率均与γ 值正相关。因此下面将会研究γ 取值对分类结果的影响。
三维离群度阈值γ对分类结果的影响 220
不同的γ 取值意味着三维离群度判别中被划分为主体成分的渠道查询所占的比重不同。
当γ 取值逐渐变大时,被划分为主体成分的查询量比例逐渐变大,输入分类器的会话数量和
查询内容变得更多,使得分类器能发现更多较为隐蔽的爬虫程序行为,因此召回率将会上升,
- 8 -
中国科技论文在线
但同时输入分类器的噪音数据也变的更多,导致分类准确率下降。
为了更加理性地验证γ 取值对分类结果的影响,我们取了 ~ 作为γ 的取值范围,225
使用 J48 作为分类器,分别验证了评价指标随着γ 不同取值的变化规律。实验结果如图 3 所
示。
图 3 评价指标随γ 取值变化图
Fig. 3 F2 value along with theγchange figure 230
从图 3 中可以看到,随着γ 取值的上升,准确率逐渐下降,而召回率逐渐上升,F1 值
则先上升后下降,在γ 取 时达到最优值。
时间频率特征与查询内容特征比较
最后,我们比较时间频率特征和查询内容特征对分类结果的影响程度。我们队分别只使
用一类特征和同时使用两类特征的分类结果进行比较,使用 J48 作为分类器,γ 值取 。235
实验结果如图 4 所示。
图 4 不同特征属性集比较图
Fig. 4 Different sets of features comparison figure
240
从图 4 中可以看出,只使用查询内容特征的分类结果要优于只使用时间频率特征的结
果,而使用全部特征进行分类的结果最优。另外,在准确率上使用不同特征分类的结果差距
不大,但是召回率的差距明显。说明当只使用传统的时间频率特征时,也能够准确发现部分
行为模式简单的爬虫程序,但是对于大部分较为智能的爬虫程序则无能为力。而增加查询内
容特征后,能够很好地弥补传统方法的不足,提高爬虫程序检测方法的效果。 245
- 9 -
中国科技论文在线
5 总结
本文研究了在互联网客票查询这一特定场景下的网络爬虫程序检测方法,通过对传统互
联网爬虫程序检测方法的总结和对实际客票查询数据的统计分析,提出了将渠道查询时间频
率特征与查询内容特征结合的查询行为建模方法。在查询行为特征建模方面,创新性地提出
了三维离群度的概念,并构建了渠道查询行为分类框架。利用实际数据训练并验证了分类模250
型的可行性与准确性。同时通过对比实验,对时间频率特征与查询内容特征进行了比较分析。
本文初步尝试了对互联网客票查询领域的爬虫程序检测方法的研究,为传统互联网爬虫
检测方法在客票查询领域的优化提供了思路。但仍然存在可以改进的空间,不要包括以下两
个方向:1) 本文提出的三维离群度方法,筛除了大量渠道中的非主体查询成分,从而提高
了对主体查询成分分类的准确率,但是尚未对这些非主体查询成分进行深入研究。渠道中的255
非主体查询成分在不同维度中表现出异常高或者异常低的查询量,往往是受到地域性事件驱
动的影响,未来可以通过对这一部分查询的深入研究,分析事件对查询行为的影响;2) 本
文结合了基于时间频率的特征属性和基于查询内容的特征属性,并对两者进行了对比试验,
但是没有深入研究两者之间的相关性。实际上查询内容与查询时间应该是密切相关的,未来
的研究可以着重于探索两者的相关性,从而从更多的维度来描述渠道查询行为的特征。 260
[参考文献] (References)
[1] DORAN D, GOKHALE S S. Web robot detection techniques: overview and limitations[J]. Data Mining &
Knowledge Discovery, 2011, 22(1-2):183-210.
[2] DORAN D, GOKHALE S S. Discovering New Trends in Web Robot Traffic Through Functional
Classification[J]. Proceedings of the Seventh IEEE International Symposium on Network Computing & 265
Applications, 2008:275-278.
[3] BOMHARDT C, GAUL W, SCHMIDT-THIEME L. Web Robot Detection - Preprocessing Web Logfiles for
Robot Detection[J]. Studies in Classification Data Analysis & Knowledge Organization, 2004:113-124.
[4] KWON S, KIM Y G, CHA S. Web robot detection based on pattern-matching technique[J]. Journal of
Information Science, 2012, 38(2):118-126. 270
[5] TAN P N, KUMAR V. Modeling of Web Robot Navigational Patterns[J]. Library Collections Acquisitions &
Technical Services, 2002, 24(4):513-514.
[6] TAN P N, KUMAR V. Discovery of Web Robot Sessions based on their Navigational Patterns[J]. Data Mining
& Knowledge Discovery, 2001, 6(1):9-35.
[7] STASSOPOULOU A, DIKAIAKOS M D. Web robot detection: A probabilistic reasoning approach[J]. 275
Computer Networks, 2009, 3(3):265-278.
[8] LU W Z, YU S Z. Web Robot Detection Based on Hidden Markov Model[C]. Communications, Circuits and
Systems Proceedings, 2006 International Conference onIEEE, 2006:1806 - 1810.
[9] 姚慧敏, 向莉. 航空公司电子客票销售渠道分析[J]. 青年时代, 2015(16):275-275.
[10] 张维东, 张凯, 董青,等. 利用决策树进行数据挖掘中的信息熵计算[J]. 计算机工程, 2001, 27(03):71-72. 280