使用python爬蟲實(shí)現(xiàn)子域名探測(cè)問題
前言
意義:子域名枚舉是為一個(gè)或多個(gè)域查找子域的過程,它是信息收集階段的重要組成部分。
實(shí)現(xiàn)方法:使用爬蟲與字典爆破。
一、爬蟲
1.ip138
def search_2(domain):
res_list = []
headers = {
'Accept': '*/*',
'Accept-Language': 'en-US,en;q=0.8',
'Cache-Control': 'max-age=0',
'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.116 Safari/537.36',
'Connection': 'keep-alive',
'Referer': 'http://www.baidu.com/'
}
results = requests.get('https://site.ip138.com/' + domain + '/domain.htm', headers=headers)
soup = BeautifulSoup(results.content, 'html.parser')
job_bt = soup.findAll('p')
try:
for i in job_bt:
link = i.a.get('href')
linkk = link[1:-1]
res_list.append(linkk)
print(linkk)
except:
pass
print(res_list[:-1])
if __name__ == '__main__':
search_2("jd.com")返回結(jié)果:

2.bing
def search_1(site):
Subdomain = []
headers = {
'Accept': '*/*',
'Accept-Language': 'en-US,en;q=0.8',
'Cache-Control': 'max-age=0',
'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.116 Safari/537.36',
'Connection': 'keep-alive',
'Referer': 'http://www.baidu.com/'
}
for i in range(1, 16):
url = "https://cn.bing.com/search?q=site%3A" + site + "&go=Search&qs=ds&first=" + str(
(int(i) - 1) * 10) + "&FORM=PERE"
# conn = requests.session()
# conn.get('http://cn.bing.com', headers=headers)
# html = conn.get(url, stream=True, headers=headers)
html = requests.get(url, stream=True, headers=headers)
soup = BeautifulSoup(html.content, 'html.parser')
# print(soup)
job_bt = soup.findAll('h2')
for i in job_bt:
link = i.a.get('href')
print(link)
if link in Subdomain:
pass
else:
Subdomain.append(link)
print(Subdomain)
if __name__ == '__main__':
search_1("jd.com")
返回結(jié)果:

二、通過字典進(jìn)行子域名爆破
def dict(url):
for dict in open('dic.txt'): # 這里用到子域名字典文件dic.txt
dict = dict.replace('\n', "")
zym_url = dict + "." + url
try:
ip = socket.gethostbyname(zym_url)
print(zym_url + "-->" + ip)
time.sleep(0.1)
except Exception as e:
# print(zym_url + "-->" + ip + "--error")
time.sleep(0.1)
if __name__ == '__main__':
dict("jd.com")返回結(jié)果:

三、python爬蟲操作步驟
1.寫出請(qǐng)求頭headers與目標(biāo)網(wǎng)站url
headers = {
'User-Agent': "Mozilla/5.0 (Windows NT 10.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.135 Safari/537.36 Edge/12.10240"
}
url = "https://site.ip138.com/"2.生成請(qǐng)求
get:res = requests.get(url + domain, headers=headers) post:res = requests.post(url + domain, headers=headers, data=data)
3.抓取數(shù)據(jù)
soup = BeautifulSoup(res.content, 'html.parser') # 以html解析器解析res的內(nèi)容
此時(shí)print(soup),返回結(jié)果:

4.分析源碼,截取標(biāo)簽中內(nèi)容
1.通過分析源碼,確定需要提取p標(biāo)簽中的內(nèi)容:
job_bt = soup.findAll('p')此時(shí)print(job_bt),返回結(jié)果:

2.繼續(xù)提取a標(biāo)簽內(nèi)屬性為href的值:
try:
for i in job_bt:
link = i.a.get('href')
linkk = link[1:-1]
res_list.append(linkk)
print(linkk)
except:
pass得結(jié)果:

3.再進(jìn)行截?。?/p>
res_list[:-1]
得結(jié)果:

四、爬蟲一些總結(jié)
1.抓取數(shù)據(jù),生成soup
soup = BeautifulSoup(res.content, 'html.parser') # 以html解析器解析res的內(nèi)容
2.從文檔中獲取所有文字內(nèi)容
print(soup.get_text())
3.從文檔中找到所有< a >標(biāo)簽的鏈接
for link in soup.find_all('a'):
print(link.get('href'))
到此這篇關(guān)于使用python實(shí)現(xiàn)子域名探測(cè)的文章就介紹到這了,更多相關(guān)python子域名內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Python7個(gè)爬蟲小案例詳解(附源碼)中篇
- Python7個(gè)爬蟲小案例詳解(附源碼)上篇
- Python爬蟲程序中使用生產(chǎn)者與消費(fèi)者模式時(shí)進(jìn)程過早退出的問題
- Python爬蟲庫(kù)urllib的使用教程詳解
- Python利用yield?form實(shí)現(xiàn)異步協(xié)程爬蟲
- python爬蟲之requests庫(kù)使用代理方式
- python?基于aiohttp的異步爬蟲實(shí)戰(zhàn)詳解
- Python爬蟲框架NewSpaper使用詳解
- 通過python爬蟲mechanize庫(kù)爬取本機(jī)ip地址的方法
- Python爬蟲學(xué)習(xí)之requests的使用教程
- python爬蟲beautiful?soup的使用方式
- Python爬蟲之超級(jí)鷹驗(yàn)證碼應(yīng)用
- Python爬蟲Requests庫(kù)的使用詳情
- python爬蟲模擬登錄之圖片驗(yàn)證碼實(shí)現(xiàn)詳解
- Python爬蟲eval實(shí)現(xiàn)看漫畫漫畫柜mhgui實(shí)戰(zhàn)分析
- python爬蟲實(shí)戰(zhàn)項(xiàng)目之爬取pixiv圖片
- python爬蟲之代理ip正確使用方法實(shí)例
- Python7個(gè)爬蟲小案例詳解(附源碼)下篇
相關(guān)文章
Python的進(jìn)程,線程和協(xié)程實(shí)例詳解
這篇文章主要為大家詳細(xì)介紹了Python進(jìn)程,線程和協(xié)程,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助2022-03-03
詳解如何用TensorFlow訓(xùn)練和識(shí)別/分類自定義圖片
這篇文章主要介紹了詳解如何用TensorFlow訓(xùn)練和識(shí)別/分類自定義圖片,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-08-08
Python實(shí)現(xiàn)火柴人的設(shè)計(jì)與實(shí)現(xiàn)
火柴人(Stick Figure)是一種極簡(jiǎn)風(fēng)格的圖形,通常由簡(jiǎn)單的線段和圓圈組成,卻能生動(dòng)地表達(dá)人物的姿態(tài)和動(dòng)作,本文旨在介紹如何使用Python實(shí)現(xiàn)火柴人的設(shè)計(jì)與繪制,通過編程的方式,讓讀者了解火柴人背后的基本原理和實(shí)現(xiàn)方法,需要的朋友可以參考下2024-10-10
Python將MP4視頻轉(zhuǎn)換為GIF圖像的三種方法
在數(shù)字時(shí)代,將視頻轉(zhuǎn)換為GIF圖像已成為一種流行的內(nèi)容創(chuàng)作方式,在Python中,有多種庫(kù)可以幫助你將MP4視頻轉(zhuǎn)換為GIF圖像,本文將介紹三種常用的方法:使用moviepy庫(kù)、imageio庫(kù)以及結(jié)合opencv和PIL庫(kù),需要的朋友可以參考下2024-12-12
解決jupyter notebook顯示不全出現(xiàn)框框或者亂碼問題
這篇文章主要介紹了解決jupyter notebook顯示不全出現(xiàn)框框或者亂碼問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-04-04
使用python構(gòu)建WebSocket客戶端的教程詳解
WebSocket是一種在客戶端和服務(wù)器之間實(shí)現(xiàn)雙向通信的協(xié)議,常用于實(shí)時(shí)聊天、實(shí)時(shí)數(shù)據(jù)更新等場(chǎng)景,Python提供了許多庫(kù)來實(shí)現(xiàn) WebSocket客戶端,本教程將介紹如何使用Python構(gòu)建WebSocket客戶端,文中通過代碼示例給大家介紹的非常詳細(xì),需要的朋友可以參考下2023-12-12

