




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第Python中常见的反爬机制及其破解方法总结—文字验证码—OCR(光学文字识别)—接口/easyocr
程序自己解决不了的问题就可以考虑使用三方接口(付费/免费)
—行为验证码—超级鹰
~手机号+短信验证码
—接码平台
~动态内容
—JavaScript逆向—找到提供数据的API接口
—手机抓接口—抓包工具(Charles/Fiddler)
—Selenium直接模拟浏览器操作获取动态内容
~find_element_by_xxx/find_elements_by_xxx
~page_source—获取包含动态内容的网页源代码
—JavaScript加密和混淆技术—读懂JavaScript是反反爬的前提
~字体反爬/内容来自于抠图
—例子
bytes—不变字节串—二进制—BytesIO
str—不变字符串—可阅读的字符—StringIO
二、调用三方API接口数据(天行数据)
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(光学文字识别)库
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!!')
#创建一个等待对象
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']
#截取整个浏览器窗口的图片获得图片的二进制数据
image_data=browser.get_screenshot_as_png()
#bytes(只读字节串)io.BytesIO(可写字节串)getvalue()bytes
#str(只读字符串)io.StringIO(可写字符串)getvalue()str
browser_image=Image.open(io.BytesIO(image_data))
#从截图上剪裁出验证码的图片
x,y=x1+x2+x3,y1+y2+y3
#Windows系统的写法如果截图有问题就把坐标写死
#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系统的写法
#checkcode_image=browser_image.crop((x*2,y*2,(x+width)*2,(y+height)*2))
checkcode_image.save('result.png')
#通过easyocr做光学文字识别
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()
四、第三方打码平台(超级鹰打码平台)
补充:需要使用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. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年中金汇通信技术有限公司甘肃分公司招聘60人笔试参考题库附带答案详解
- 计划你的2024年纺织品检验员考试试题及答案
- 纺织品质量控制方法试题及答案
- 耳鼻喉科英文试题及答案
- 环保科技示范园建设项目可行性研究报告分析
- 解除《租赁合同》协议书
- 瓷粉施工合同协议书
- 建筑施工合同合同协议书
- 礼品供货合同协议书范本
- 拟定合同协议书
- LY/T 2457-2015西南桦培育技术规程
- GB/T 40998-2021变性淀粉中羟丙基含量的测定分光光度法
- GB/T 25840-2010规定电气设备部件(特别是接线端子)允许温升的导则
- GB/T 12008.7-2010塑料聚醚多元醇第7部分:黏度的测定
- 军标类型整理文档
- FZ/T 52019-2011莱赛尔短纤维
- 止血包扎(课件)
- 2022年湖南高二学业水平合格考试政治试卷真题及答案详解
- 投行业务二o一五年度经营绩效考核办法
- 心内科实习生规培手册
- 2021年苏州资产管理有限公司招聘笔试试题及答案解析
评论
0/150
提交评论