抓取网页数据违法吗(本文介绍如何使用机器学习技术检测URL是否是是否是钓鱼网站)
优采云 发布时间: 2021-11-09 21:09抓取网页数据违法吗(本文介绍如何使用机器学习技术检测URL是否是是否是钓鱼网站)
本文介绍如何使用机器学习技术检测一个URL是否为钓鱼网站,包括数据抓取、特征选择、模型训练等。
我有一个客户的邮箱,最近差点被钓鱼网站骗了。他的供应商邮箱被攻击,然后黑客利用供应商的邮箱给他发了一封催款邮件,要求他向另一个银行账户付款。幸运的是,我的客户致电供应商确认并发现了骗局。这让我意识到网络钓鱼攻击无处不在,我们不应低估其危害。
以下是网络钓鱼 网站 的一些示例。基本上,他们的目的是欺骗您的登录帐户和密码。这是一个冒充 Paypal 的钓鱼站:
这是一个假游戏站:
1、初步分析
学习编程,上慧智网,在线编程环境,*敏*感*词*助教指导。
Kaggle 上有一些网络钓鱼数据集,但对于这个项目,我想生成自己的数据库。我使用了两个数据源来构建网络钓鱼 URL 列表:
借助一点领域知识,对这些合法的钓鱼网址进行分析,我将可以从这些网址中获取的信息分为以下5类:
域名:二级域名可能存在钓鱼风险。例如: Network: HTTP 对应的header 可能收录有用的信息页面: 一般而言,网络钓鱼网站 总是使用一些形式来试图让你输入帐户、电子邮件、密码等信息。Whois:域名通常是通过GoDaddy等注册的。
通过分析,我有以下发现:
2、数据采集
我的数据爬虫的概念模型大致如下:
基本思想是使代码尽可能模块化,以便我可以在需要时添加新类别。我抓取的每个页面都存储在一个本地文件中,以便将来在它们不可用时作为参考。
我使用 BeautifulSoup 提取页面信息。通过设置随机用户代理,我可以减少请求被机器人拒绝的可能性。
为了确保一致性,我还对 URL 进行了基本的预处理,例如删除 www 和尾部斜杠。
3、探索性数据分析
由于爬取数据非常耗时,我决定开始我的探索性数据分析,寻找一些感觉。在分析了1817个网址(包括930个钓鱼网址和887个合法网址)的特征后,我选择使用以下15个特征:
1
2
3
4
5
6
7
8
9
10
URL Domain Network Page Whois
-------------- --------------- ------------ ---------- ---------
length len_subdomain len_cookie length w_score
special_char is_https anchors
depth form
password
signin
hidden
popup
4、特征选择
我使用 LASSO 正则化来识别重要特征。即使只有很小的 alpha 值,我也发现了 5 个重要特征:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[('len', 0.0006821926601753635),
('count_s', 0.0),
('depth', 0.0),
('len_subdomain', 0.0),
('is_https', 0.0),
('len_cookie', -0.0002472539769316538),
('page_length', -2.4074484401619206e-07),
('page_num_anchor', -0.0006943876695101922),
('page_num_form', -0.0),
('page_num_email', -0.0),
('page_num_password', 0.0),
('page_num_signin', 0.0),
('page_num_hidden', -0.00041105959874092535),
('page_num_popup', -0.0),
('w_score', -0.0)]
坦率地说,我有点惊讶 w_score 不起作用。最后我决定使用这 5 个功能。
1
2
3
4
5
URL Domain Network Page Whois
-------- -------- ------------ --------- -------
length len_cookie length
anchors
hidden
然后我用 KNN 构建了一个简单的分类器作为基线。K 选择了 3 并且得到了公平的准确率0.793:
5、型号
我通过爬取得到6906个网址,3501是合法的,3455是钓鱼的。毫不奇怪,许多网络钓鱼页面不再可访问:
1
2
3
4
Type #URL processed #Pages available
------- ---------------- ------------------
Legit 4,000 3,501
Phish 6,000 3,455
使用这 6906 个样本,我再次进行特征选择,筛选出相同的 5 个特征。最好的K还是3,太好了!
以下是模型的参数:
1
2
3
4
5
6
7
8
9
Model Accuracy
------------------- ----------
Naive Bayes 0.757
SVC 0.760
KNN (K=3) 0.791
Log. Reg. 0.822
Decision Tree 0.836
KNN (K=3, scaled) 0.845
Random Forest 0.885
原文链接:监督学习检测钓鱼网址