大家都知道,在python當中,需要面對是各種各樣的問題,比如我們需要用到的是:使用python爬蟲實現子域名探測,這種技能是值得我們去進行學習的,但是學習的話,內容還是比較多的,下面就具體的內容,給大家做出一個詳細解答。
前言
意義:子域名枚舉是為一個或多個域查找子域的過程,它是信息收集階段的重要組成部分。
實現方法:使用爬蟲與字典爆破。
一、爬蟲
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")
返回結果:
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")
返回結果:
二、通過字典進行子域名爆破
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")
返回結果:
三、python爬蟲操作步驟
1.寫出請求頭headers與目標網站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.生成請求
get:res=requests.get(url+domain,headers=headers) post:res=requests.post(url+domain,headers=headers,data=data)
3.抓取數據
soup=BeautifulSoup(res.content,'html.parser')#以html解析器解析res的內容
此時print(soup),返回結果:
4.分析源碼,截取標簽中內容
1.通過分析源碼,確定需要提取p標簽中的內容:
job_bt=soup.findAll('p')
此時print(job_bt),返回結果:
2.繼續提取a標簽內屬性為href的值:
try: for i in job_bt: link=i.a.get('href') linkk=link[1:-1] res_list.append(linkk) print(linkk) except: pass
得結果:
3.再進行截取:
res_list[:-1]
得結果:
四、爬蟲一些總結
1.抓取數據,生成soup
soup=BeautifulSoup(res.content,'html.parser')#以html解析器解析res的內容
2.從文檔中獲取所有文字內容
print(soup.get_text())
3.從文檔中找到所有<a>標簽的鏈接
for link in soup.find_all('a'): print(link.get('href'))
綜上所述,這篇文章就給大家介紹到這里了,希望可以給大家帶來更多的幫助。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/128252.html
摘要:通過域名,最終得到該域名對應的地址的過程叫做域名解析或主機名解析。協議運行在協議之上,使用端口號。在文檔中對有規范說明,對的動態更新進行說明,對查詢的反向緩存進行說明。 你們是否跟我一樣,不知道什么是DNS,在這里,首先普及一下什么是DNS DNS(Domain Name System,域名系統),萬維網上作為域名和IP地址相互映射的一個分布式數據庫,能夠使用戶更方便的訪問互聯網...
摘要:用將倒放這次讓我們一個用做一個小工具將動態圖片倒序播放發現引力波的機構使用的包美國科學家日宣布,他們去年月首次探測到引力波。宣布這一發現的,是激光干涉引力波天文臺的負責人。這個機構誕生于上世紀年代,進行引力波觀測已經有近年。 那些年我們寫過的爬蟲 從寫 nodejs 的第一個爬蟲開始陸陸續續寫了好幾個爬蟲,從爬拉勾網上的職位信息到爬豆瓣上的租房帖子,再到去爬知乎上的妹子照片什么的,爬蟲...
摘要:內存池機制提供了對內存的垃圾收集機制,但是它將不用的內存放到內存池而不是返回給操作系統。為了加速的執行效率,引入了一個內存池機制,用于管理對小塊內存的申請和釋放。 注:答案一般在網上都能夠找到。1.對if __name__ == main的理解陳述2.python是如何進行內存管理的?3.請寫出一段Python代碼實現刪除一個list里面的重復元素4.Python里面如何拷貝一個對象?...
閱讀 911·2023-01-14 11:38
閱讀 878·2023-01-14 11:04
閱讀 740·2023-01-14 10:48
閱讀 1983·2023-01-14 10:34
閱讀 942·2023-01-14 10:24
閱讀 819·2023-01-14 10:18
閱讀 499·2023-01-14 10:09
閱讀 572·2023-01-14 10:02