最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python實(shí)現(xiàn)web郵箱掃描的示例(附源碼)

 更新時(shí)間:2021年03月30日 15:20:22   作者:Giopi  
這篇文章主要介紹了python實(shí)現(xiàn)web郵箱掃描的示例(附源碼),幫助大家更好的理解和學(xué)習(xí)使用python,感興趣的朋友可以了解下

信息收集是進(jìn)行滲透測(cè)試的關(guān)鍵部分,掌握大量的信息對(duì)于攻擊者來說是一件非常重要的事情,比如,我們知道一個(gè)服務(wù)器的版本信息,我們就可以利用該服務(wù)器框架的相關(guān)漏洞對(duì)該服務(wù)器進(jìn)行測(cè)試。那么如果我們掌握了該服務(wù)器的管理員的郵箱地址,我們就可以展開一個(gè)釣魚攻擊。所以,對(duì)web站點(diǎn)進(jìn)行郵箱掃描,是進(jìn)行釣魚攻擊的一種前提條件。

下面,我們利用python腳本來實(shí)現(xiàn)一個(gè)web站點(diǎn)的郵箱掃描爬取。目的是在實(shí)現(xiàn)這個(gè)腳本的過程中對(duì)python進(jìn)行學(xué)習(xí)

最后有完整代碼

基本思路

  1. 我們向工具傳入目標(biāo)站點(diǎn)之后,首先要對(duì)輸入進(jìn)行一個(gè)基本的檢查和分析,因?yàn)槲覀儠?huì)可能會(huì)傳入各種樣式的地址,比如http://www.xxxx.com/、http://www.xxxx.com/123/456/789.html等等,我們需要對(duì)其進(jìn)行簡單的拆分,以便于后面鏈接的爬取
  2. 通過requests庫爬取目標(biāo)地址的內(nèi)容,并且在內(nèi)容通過正則表達(dá)式中尋找郵箱地址
  3. 查找爬取的網(wǎng)站中的超鏈接,通過這些超鏈接我們就能進(jìn)入到該站點(diǎn)的另外一個(gè)頁面繼續(xù)尋找我們想要的郵箱地址。
  4. 開工:

該腳本所需要的一些庫

from bs4 import BeautifulSoup #BeautifulSoup最主要的功能是從網(wǎng)頁抓取數(shù)據(jù),Beautiful Soup自動(dòng)將輸入文檔轉(zhuǎn)換為Unicode編碼
import requests #requests是python實(shí)現(xiàn)的最簡單易用的HTTP庫
import requests.exceptions
import urllib.parse
from collections import deque #deque 是一個(gè)雙端隊(duì)列, 如果要經(jīng)常從兩端append 的數(shù)據(jù), 選擇這個(gè)數(shù)據(jù)結(jié)構(gòu)就比較好了, 如果要實(shí)現(xiàn)隨機(jī)訪問,不建議用這個(gè),請(qǐng)用列表. 
import re #是一個(gè)正則表達(dá)式的庫

獲取掃描目標(biāo)

user_url=str(input('[+] Enter Target URL to Scan:'))
urls =deque([user_url]) #把目標(biāo)地址放入deque對(duì)象列表

scraped_urls= set()#set() 函數(shù)創(chuàng)建一個(gè)無序不重復(fù)元素集,可進(jìn)行關(guān)系測(cè)試,刪除重復(fù)數(shù)據(jù),還可以計(jì)算交集、差集、并集等。
emails = set()

對(duì)網(wǎng)頁進(jìn)行郵箱地址爬取(100條)

首先要對(duì)目標(biāo)地址進(jìn)行分析,拆分目標(biāo)地址的協(xié)議,域名以及路徑。然后利用requests的get方法訪問網(wǎng)頁,通過正則表達(dá)式過濾出是郵箱地址的內(nèi)容。'[a-z0-0.-+]+@[a-z0-9.-+]+.[a-z]+',符合郵箱格式的內(nèi)容就進(jìn)行收錄。

count=0
try:
  while len(urls):  #如果urls有長度的話進(jìn)行循環(huán)
    count += 1		#添加計(jì)數(shù)器來記錄爬取鏈接的條數(shù) 
    if count ==101:
      break
    url = urls.popleft() #popleft()會(huì)刪除urls里左邊第一條數(shù)據(jù)并傳給url
    scraped_urls.add(url)

    parts = urllib.parse.urlsplit(url) # 打印 parts會(huì)顯示:SplitResult(scheme='http', netloc='www.baidu.com', path='', query='', fragment='')
    base_url = '{0.scheme}://{0.netloc}'.format(parts)#scheme:協(xié)議;netloc:域名 

    path = url[:url.rfind('/')+1] if '/' in parts.path else url#提取路徑
    print('[%d] Processing %s' % (count,url))
   
    try:
      head = {'User-Agent':"Opera/9.80 (Macintosh; Intel Mac OS X 10.6.8; U; en) Presto/2.8.131 Version/11.11"}
      response = requests.get(url,headers = head)
    except(requests.exceptions.MissingSchema,requests.exceptions.ConnectionError):
      continue
    new_emails = set(re.findall(r'[a-z0-0\.\-+_]+@[a-z0-9\.\-+_]+\.[a-z]+', response.text ,re.I))#通過正則表達(dá)式從獲取的網(wǎng)頁中提取郵箱,re.I表示忽略大小寫
    emails.update(new_emails)#將獲取的郵箱地址存在emalis中。

通過錨點(diǎn)進(jìn)入下一網(wǎng)頁繼續(xù)搜索

    soup = BeautifulSoup(response.text, features='lxml')

    for anchor in soup.find_all('a'):  #尋找錨點(diǎn)。在html中,<a>標(biāo)簽代表一個(gè)超鏈接,herf屬性就是鏈接地址
      link = anchor.attrs['href'] if 'href' in anchor.attrs else '' #如果,我們找到一個(gè)超鏈接標(biāo)簽,并且該標(biāo)簽有herf屬性,那么herf后面的地址就是我們需要錨點(diǎn)鏈接。
      if link.startswith('/'):#如果該鏈接以/開頭,那它只是一個(gè)路徑,我們就需要加上協(xié)議和域名,base_url就是剛才分離出來的協(xié)議+域名
        link = base_url + link
      elif not link.startswith('http'):#如果不是以/和http開頭的話,就要加上路徑。
        link =path + link
      if not link in urls and not link in scraped_urls:#如果該鏈接在之前沒還有被收錄的話,就把該鏈接進(jìn)行收錄。
        urls.append(link)
except KeyboardInterrupt:
  print('[+] Closing')

for mail in emails:
  print(mail)

完整代碼

from bs4 import BeautifulSoup
import requests
import requests.exceptions
import urllib.parse
from collections import deque
import re

user_url=str(input('[+] Enter Target URL to Scan:'))
urls =deque([user_url])

scraped_urls= set()
emails = set()


count=0
try:
  while len(urls):
    count += 1
    if count ==100:
      break
    url = urls.popleft()
    scraped_urls.add(url)

    parts = urllib.parse.urlsplit(url)
    base_url = '{0.scheme}://{0.netloc}'.format(parts)

    path = url[:url.rfind('/')+1] if '/' in parts.path else url

    print('[%d] Processing %s' % (count,url))
    try:
      head = {'User-Agent':"Opera/9.80 (Macintosh; Intel Mac OS X 10.6.8; U; en) Presto/2.8.131 Version/11.11"}
      response = requests.get(url,headers = head)
    except(requests.exceptions.MissingSchema,requests.exceptions.ConnectionError):
      continue
    new_emails = set(re.findall(r'[a-z0-0\.\-+_]+@[a-z0-9\.\-+_]+\.[a-z]+', response.text ,re.I))
    emails.update(new_emails)

    soup = BeautifulSoup(response.text, features='lxml')

    for anchor in soup.find_all('a'):
      link = anchor.attrs['href'] if 'href' in anchor.attrs else ''
      if link.startswith('/'):
        link = base_url + link
      elif not link.startswith('http'):
        link =path + link
      if not link in urls and not link in scraped_urls:
        urls.append(link)
except KeyboardInterrupt:
  print('[+] Closing')

for mail in emails:
  print(mail)

實(shí)驗(yàn)………………

以上就是python實(shí)現(xiàn)web郵箱掃描的示例(附源碼)的詳細(xì)內(nèi)容,更多關(guān)于python web郵箱掃描的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 通過python在PDF中添加條形碼和二維碼的代碼詳解

    通過python在PDF中添加條形碼和二維碼的代碼詳解

    在PDF中添加條碼是一個(gè)常見需求,特別是在需要自動(dòng)化處理、跟蹤或檢索PDF文件時(shí),作為一種機(jī)器可讀的標(biāo)識(shí)符,PDF中的條碼可以包含各種類型的信息,本文介紹了如何使用Python在PDF中添加條形碼或二維碼,需要的朋友可以參考下
    2024-08-08
  • matlab輸出數(shù)據(jù)為excel文件的問題

    matlab輸出數(shù)據(jù)為excel文件的問題

    這篇文章主要介紹了matlab輸出數(shù)據(jù)為excel文件的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • 基于PyQt5制作Excel數(shù)據(jù)分組匯總器

    基于PyQt5制作Excel數(shù)據(jù)分組匯總器

    這篇文章主要介紹了基于PyQt5制作的一個(gè)小工具:Excel數(shù)據(jù)分組匯總器。文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起試一試
    2022-01-01
  • 基于python指定包的安裝路徑方法

    基于python指定包的安裝路徑方法

    今天小編就為大家分享一篇基于python指定包的安裝路徑方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-10-10
  • 使用pandas的box_plot去除異常值

    使用pandas的box_plot去除異常值

    今天小編就為大家分享一篇使用pandas的box_plot去除異常值,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-12-12
  • flask中使用SQLAlchemy進(jìn)行輔助開發(fā)的代碼

    flask中使用SQLAlchemy進(jìn)行輔助開發(fā)的代碼

    在Web.py, Django, Flask, Tornado里,自帶的ORM功能比較缺乏,推薦大家使用SQLAlchemy來輔助開發(fā)
    2013-02-02
  • Python利用smtplib實(shí)現(xiàn)郵件發(fā)送

    Python利用smtplib實(shí)現(xiàn)郵件發(fā)送

    在當(dāng)今數(shù)字時(shí)代,電子郵件已成為我們生活和工作中不可或缺的一部分,本篇文章將為你講解如何在Python發(fā)送郵件,并為你提供實(shí)現(xiàn)的多種方式,希望對(duì)大家有所幫助
    2023-06-06
  • Python中re模塊常用方法總結(jié)分析

    Python中re模塊常用方法總結(jié)分析

    這篇文章主要為大家介紹了Python中re模塊常用方法,并對(duì)這些常用方法進(jìn)行總結(jié)分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助
    2021-09-09
  • python實(shí)現(xiàn)登錄與注冊(cè)系統(tǒng)

    python實(shí)現(xiàn)登錄與注冊(cè)系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)登錄與注冊(cè)系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-11-11
  • Python寫的創(chuàng)建文件夾自定義函數(shù)mkdir()

    Python寫的創(chuàng)建文件夾自定義函數(shù)mkdir()

    這篇文章主要介紹了Python寫的創(chuàng)建文件夾自定義函數(shù)mkdir(),文件夾操作是編程中經(jīng)常需要的,mkdir函數(shù)更是經(jīng)典中的經(jīng)典,需要的朋友可以參考下
    2014-08-08

最新評(píng)論

莎车县| 新密市| 开远市| 永吉县| 通化县| 竹山县| 永宁县| 安达市| 岚皋县| 墨玉县| 昌宁县| 潜江市| 曲水县| 祁门县| 英吉沙县| 祁东县| 资兴市| 攀枝花市| 龙江县| 延津县| 奉贤区| 衡东县| 贡山| 武穴市| 壤塘县| 巢湖市| 海南省| 桃江县| 普兰店市| 绵竹市| 天门市| 襄城县| 金坛市| 渝中区| 县级市| 黄梅县| 加查县| 陈巴尔虎旗| 龙里县| 招远市| 忻州市|