




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
第Python中常見的反爬機(jī)制及其破解方法總結(jié)—文字驗證碼—OCR(光學(xué)文字識別)—接口/easyocr
程序自己解決不了的問題就可以考慮使用三方接口(付費(fèi)/免費(fèi))
—行為驗證碼—超級鷹
~手機(jī)號+短信驗證碼
—接碼平臺
~動態(tài)內(nèi)容
—JavaScript逆向—找到提供數(shù)據(jù)的API接口
—手機(jī)抓接口—抓包工具(Charles/Fiddler)
—Selenium直接模擬瀏覽器操作獲取動態(tài)內(nèi)容
~find_element_by_xxx/find_elements_by_xxx
~page_source—獲取包含動態(tài)內(nèi)容的網(wǎng)頁源代碼
—JavaScript加密和混淆技術(shù)—讀懂JavaScript是反反爬的前提
~字體反爬/內(nèi)容來自于摳圖
—例子
bytes—不變字節(jié)串—二進(jìn)制—BytesIO
str—不變字符串—可閱讀的字符—StringIO
二、調(diào)用三方API接口數(shù)據(jù)(天行數(shù)據(jù))
importrequests
forpageinrange(1,6):
response=requests.get(
'/topnews/index',
params={
'key':'d5eace66dccd771e36767ce3563efa09',
'page':page,
'num':20,
'word':'華為',
'src':'人民日報'
result=response.json()
fornewsinresult['newslist']:
print(news['title'])
print(news['url'])
三、OCR(光學(xué)文字識別)庫
python自帶的easyocr庫
importeasyocr
reader=easyocr.Reader(['ch_sim','en'],gpu=False)
print(reader.readtext('./files/captcha.jpg',detail=0))
例子:阿里云郵箱自動登陸
importio
importeasyocr
fromPILimportImage
fromseleniumimportwebdriver
frommon.byimportBy
fromselenium.webdriver.supportimportexpected_conditions
fromselenium.webdriver.support.waitimportWebDriverWait
browser=webdriver.Chrome()
browser.set_window_size(1280,960)
browser.get('/')
#隱式等待(下面的方法在工作時如果取不到就等10秒)
browser.implicitly_wait(10)
#顯式等待
wait=WebDriverWait(browser,10)
wait.until(expected_conditions.presence_of_element_located((By.CSS_SELECTOR,'.login_panel_iframe')))
iframe1=browser.find_element_by_css_selector('.login_panel_iframe')
#記錄iframe1的位置(相對位置)
x1,y1=iframe1.location['x'],iframe1.location['y']
#Chrome對象的switch_to屬性的frame方法,可以從頁面切換到iframe中
browser.switch_to.frame(iframe1)
iframe2=browser.find_element_by_css_selector('#ding-login-iframe')
x2,y2=iframe2.location['x'],iframe2.location['y']
browser.switch_to.frame(iframe2)
username_input=browser.find_element_by_css_selector('#username')
#模擬用戶輸入
username_input.send_keys('xx@1000')
password_input=browser.find_element_by_css_selector('#password')
password_input.send_keys('xxxxx!!')
#創(chuàng)建一個等待對象
wait=WebDriverWait(browser,10)
wait.until(expected_conditions.element_to_be_clickable((By.CSS_SELECTOR,'#login_checkcode_ico')))
captcha_img=browser.find_element_by_css_selector('#login_checkcode_ico')
#WebElement對象的size屬性代表元素寬度和高度,location屬性代表元素在窗口中的位置
size,location=captcha_img.size,captcha_img.location
x3,y3,width,height=location['x'],location['y'],size['width'],size['height']
#截取整個瀏覽器窗口的圖片獲得圖片的二進(jìn)制數(shù)據(jù)
image_data=browser.get_screenshot_as_png()
#bytes(只讀字節(jié)串)io.BytesIO(可寫字節(jié)串)getvalue()bytes
#str(只讀字符串)io.StringIO(可寫字符串)getvalue()str
browser_image=Image.open(io.BytesIO(image_data))
#從截圖上剪裁出驗證碼的圖片
x,y=x1+x2+x3,y1+y2+y3
#Windows系統(tǒng)的寫法如果截圖有問題就把坐標(biāo)寫死
#print(x,y,width,height)
checkcode_image=browser_image.crop((x*1.25,y*1.25,(x+width)*1.25,(y+height)*1.25))
#macOS系統(tǒng)的寫法
#checkcode_image=browser_image.crop((x*2,y*2,(x+width)*2,(y+height)*2))
checkcode_image.save('result.png')
#通過easyocr做光學(xué)文字識別
reader=easyocr.Reader(['en'],gpu=False)
code=reader.readtext('result.png',detail=0)[0]
#將識別出的驗證碼輸入文本框
checkcode_input=browser.find_element_by_css_selector('#login_checkcode')
checkcode_input.send_keys(code)
login_button=browser.find_element_by_css_selector('#login_submit_btn')
#模擬用戶點擊
login_button.click()
四、第三方打碼平臺(超級鷹打碼平臺)
補(bǔ)充:需要使用python自帶pillow庫
Pillow庫PILPythonImageLibrary
fromPILimportImage,ImageFilter
#加載圖像
guido_image=Image.open('guido.jpg')
guido_image.crop((80,
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 保定幼兒師范高等專科學(xué)?!队耙曧椖抗芾怼?023-2024學(xué)年第二學(xué)期期末試卷
- 蘭州信息科技學(xué)院《燈光與建聲設(shè)計》2023-2024學(xué)年第二學(xué)期期末試卷
- 黃山學(xué)院《教師口語(普通話)》2023-2024學(xué)年第二學(xué)期期末試卷
- 長江工程職業(yè)技術(shù)學(xué)院《班主任工作技能》2023-2024學(xué)年第二學(xué)期期末試卷
- 浙江水利水電學(xué)院《課件制作》2023-2024學(xué)年第二學(xué)期期末試卷
- 鎮(zhèn)江市高等??茖W(xué)校《中學(xué)語文教材分析與教學(xué)設(shè)計》2023-2024學(xué)年第二學(xué)期期末試卷
- 浙江電力職業(yè)技術(shù)學(xué)院《現(xiàn)代服務(wù)業(yè)管理》2023-2024學(xué)年第二學(xué)期期末試卷
- 廣東東軟學(xué)院《機(jī)械專業(yè)學(xué)位類別論文寫作指導(dǎo)》2023-2024學(xué)年第二學(xué)期期末試卷
- 教師與學(xué)生的溝通
- 山西工程科技職業(yè)大學(xué)《材料成型設(shè)備及其自動化》2023-2024學(xué)年第二學(xué)期期末試卷
- 電腦和打印機(jī)維保服務(wù)投標(biāo)文件、方案
- (典型題)浙教版七年級下冊數(shù)學(xué)第六章-數(shù)據(jù)與統(tǒng)計圖表含答案
- 信息系統(tǒng)運(yùn)行管理員(基礎(chǔ)知識、應(yīng)用技術(shù))合卷軟件資格考試(初級)試題與參考答案(2024年)
- 巖爆災(zāi)害防治策略-洞察分析
- 商場運(yùn)營管理規(guī)定范文(2篇)
- IATF16949:2024標(biāo)準(zhǔn)質(zhì)量手冊
- 稀土材料技術(shù)基礎(chǔ)知識單選題100道及答案解析
- 生理學(xué)基礎(chǔ)題庫(46道)
- GB/T 17395-2024鋼管尺寸、外形、重量及允許偏差
- 朗讀藝術(shù)入門學(xué)習(xí)通超星期末考試答案章節(jié)答案2024年
- DB5101-T135-2021城市公園分類分級管理規(guī)范
評論
0/150
提交評論