Merge pull request #25435 from wxy/20220429-Detect-a-Phishing-URL-Using-Machine-Learning-in-Python

RP:published/20220429 Detect a Phishing URL Using Machine Learning in Python.md
This commit is contained in:
Xingyu.Wang 2022-05-02 18:15:06 +08:00 committed by GitHub
commit 9105363943
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -3,15 +3,16 @@
[#]: author: "Jishnu Saurav Mittapalli https://www.opensourceforu.com/author/jishnu-saurav-mittapalli/" [#]: author: "Jishnu Saurav Mittapalli https://www.opensourceforu.com/author/jishnu-saurav-mittapalli/"
[#]: collector: "lkxed" [#]: collector: "lkxed"
[#]: translator: "lkxed" [#]: translator: "lkxed"
[#]: reviewer: " " [#]: reviewer: "wxy"
[#]: publisher: " " [#]: publisher: "wxy"
[#]: url: " " [#]: url: "https://linux.cn/article-14535-1.html"
在 Python 中使用机器学习来检测钓鱼链接 在 Python 中使用机器学习来检测钓鱼链接
====== ======
在网络钓鱼攻击中,用户会收到一封带有误导性链接的邮件或信息,攻击者可以利用它来收集重要数据,比如你的银行卡密码。本文将会给出一个简短的教程,旨在介绍如何检测这种网络钓鱼的企图。 在网络钓鱼攻击中,用户会收到一封带有误导性链接的邮件或信息,攻击者可以利用它来收集重要数据,比如你的银行卡密码。本文将会给出一个简短的教程,旨在介绍如何检测这种网络钓鱼的企图。
![网络钓鱼攻击][1] ![](https://img.linux.net.cn/data/attachment/album/202205/02/180603k231bbvubv3b23u6.jpg)
通过网络钓鱼攻击,攻击者能够获得一些重要凭证,这些凭证可以用来进入你的银行或其他金融账户。攻击者发送的 URL 看起来与我们日常使用的原始应用程序完全相同。这也是人们经常相信它,并在其中输入个人信息的原因。钓鱼网址可以打开一个网页,它看起来与你的银行的原始登录页面相似。最近,这样的网络钓鱼攻击正变得相当普遍,所以,检测钓鱼链接变得非常重要。因此,我将介绍如何在 Python 中使用机器学习来检查一个链接是误导性的还是真实的,因为它可以帮助我们看到网页代码及其输出。注意,本文将使用 Jupyter Notebook。当然你也可以使用 Google Colab 或 Amazon Sagemaker如果你对这些更熟悉的话。 通过网络钓鱼攻击,攻击者能够获得一些重要凭证,这些凭证可以用来进入你的银行或其他金融账户。攻击者发送的 URL 看起来与我们日常使用的原始应用程序完全相同。这也是人们经常相信它,并在其中输入个人信息的原因。钓鱼网址可以打开一个网页,它看起来与你的银行的原始登录页面相似。最近,这样的网络钓鱼攻击正变得相当普遍,所以,检测钓鱼链接变得非常重要。因此,我将介绍如何在 Python 中使用机器学习来检查一个链接是误导性的还是真实的,因为它可以帮助我们看到网页代码及其输出。注意,本文将使用 Jupyter Notebook。当然你也可以使用 Google Colab 或 Amazon Sagemaker如果你对这些更熟悉的话。
@ -19,15 +20,14 @@
第一步,我们需要用于训练数据集。你可以从下面的链接中下载数据集。 第一步,我们需要用于训练数据集。你可以从下面的链接中下载数据集。
*真实的链接https://github.com/jishnusaurav/Phishing-attack-PCAP-analysis-using-scapy/blob/master/Phishing-Website-Detection/datasets/legitimate-urls.csv* * 真实的链接https://github.com/jishnusaurav/Phishing-attack-PCAP-analysis-using-scapy/blob/master/Phishing-Website-Detection/datasets/legitimate-urls.csv
* 钓鱼链接https://github.com/jishnusaurav/Phishing-attack-PCAP-analysis-using-scapy/blob/master/Phishing-Website-Detection/datasets/phishing-urls.csv
*钓鱼链接https://github.com/jishnusaurav/Phishing-attack-PCAP-analysis-using-scapy/blob/master/Phishing-Website-Detection/datasets/phishing-urls.csv*
### 训练机器进行预测 ### 训练机器进行预测
当数据集下载完成,我们需要使用以下几行代码来导入所需的库: 当数据集下载完成,我们需要使用以下几行代码来导入所需的库:
```python ```
import pandas as pd import pandas as pd
from sklearn.ensemble import RandomForestClassifier from sklearn.ensemble import RandomForestClassifier
``` ```
@ -38,7 +38,7 @@ from sklearn.ensemble import RandomForestClassifier
当依赖安装完成,你就可以导入数据集,并将其转换为 `pandas` 数据框架,使用以下几行代码进一步处理: 当依赖安装完成,你就可以导入数据集,并将其转换为 `pandas` 数据框架,使用以下几行代码进一步处理:
```python ```
legitimate_urls = pd.read_csv(“/home/jishnusaurav/jupyter/Phishing-Website-Detection/datasets/legitimate-urls.csv”) legitimate_urls = pd.read_csv(“/home/jishnusaurav/jupyter/Phishing-Website-Detection/datasets/legitimate-urls.csv”)
phishing_urls = pd.read_csv(“/home/jishnusaurav/jupyter/Phishing-Website-Detection/datasets/phishing-urls.csv”) phishing_urls = pd.read_csv(“/home/jishnusaurav/jupyter/Phishing-Website-Detection/datasets/phishing-urls.csv”)
``` ```
@ -47,28 +47,28 @@ phishing_urls = pd.read_csv(“/home/jishnusaurav/jupyter/Phishing-Website-Detec
![合并后的数据集的前几行][3] ![合并后的数据集的前几行][3]
然后去掉那些我们不需要的列,如<ruby>路径<rt>path</rt></ruby><ruby>协议<rt>protocol</rt></ruby>等,以达到预测的目的: 然后去掉那些我们不需要的列,如路径(`path`)、协议(`protocol`等,以达到预测的目的:
```python ```
urls = urls.drop(urls.columns[[0,3,5]],axis=1) urls = urls.drop(urls.columns[[0,3,5]],axis=1)
``` ```
在这之后,我们需要使用以下代码将数据集分成测试和训练两部分: 在这之后,我们需要使用以下代码将数据集分成测试和训练两部分:
```python ```
data_train, data_test, labels_train, labels_test = train_test_split(urls_without_labels, labels, test_size=0.30, random_state=110) data_train, data_test, labels_train, labels_test = train_test_split(urls_without_labels, labels, test_size=0.30, random_state=110)
``` ```
接着,我们使用 `sklearn` 的随机森林分类器建立一个模型,然后使用 `fit` 函数来训练这个模型。 接着,我们使用 `sklearn` 的随机森林分类器建立一个模型,然后使用 `fit` 函数来训练这个模型。
```python ```
random_forest_classifier = RandomForestClassifier() random_forest_classifier = RandomForestClassifier()
random_forest_classifier.fit(data_train,labels_train) random_forest_classifier.fit(data_train,labels_train)
``` ```
完成这些后,我们就可以使用 `predict` 函数来最终预测哪些链接是钓鱼链接。下面这行可用于预测: 完成这些后,我们就可以使用 `predict` 函数来最终预测哪些链接是钓鱼链接。下面这行可用于预测:
```python ```
prediction_label = random_forest_classifier.predict(test_data) prediction_label = random_forest_classifier.predict(test_data)
``` ```
@ -81,7 +81,7 @@ via: https://www.opensourceforu.com/2022/04/detect-a-phishing-url-using-machine-
作者:[Jishnu Saurav Mittapalli][a] 作者:[Jishnu Saurav Mittapalli][a]
选题:[lkxed][b] 选题:[lkxed][b]
译者:[lkxed](https://github.com/lkxed) 译者:[lkxed](https://github.com/lkxed)
校对:[校对者ID](https://github.com/校对者ID) 校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出