抓取网页数据违法吗(本文介绍如何使用机器学习技术检测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

email

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

  原文链接:监督学习检测钓鱼网址

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线