当前位置: 首页 > 后端技术 > Python

防攀爬用品-教你如何应对JS反向图片伪装

时间:2023-03-26 00:05:34 Python

最近准备更新反爬系列相关的内容。第一篇将从最简单的“图像伪装”开始。,和图片混合在一起展示,限制爬虫程序直接获取网页内容。登录后点击页面的查看按钮调用一个接口,电话号码会完整显示https://**/getentcontacts/b2147f6a-6ec7-403e-a836-62978992841bPS:URL地址中的b2147f6a-6ec7-403e-a836-62978992841b在网页源码中可以得到,和企业一一对应是一致的,所以我们只需要下载这张图片,用OCR识别一对一对应tel字段importrequestsheaders={'User-Agent':'Mozilla/5.0(Macintosh;IntelMacOSX10_15_7)AppleWebKit/537.36(KHTML,likeGecko)Chrome/101.0.4951.64Safari/537.36Cookie','':'***'}#获取手机号对应的tel字段id(一一对应)defget_tel_id():#b2147f6a-6ec7-403e-a836-62978992841b对应企业,也是一对一一对应(网页源代码)url="https://**/getentcontacts/b2147f6a-6ec7-403e-a836-62978992841b"payload={}resp=requests.request("GET",url,headers=headers,data=payload).json()tel_id=resp.get("tel")returntel_id然后用上面的tel字段组成图片URL地址最后,就可以对图片进行文字识别。这里有2种方式:百度OCRpytesseract2-1百度OCR首先安装依赖包#安装依赖包pip3installbaidu-aip然后创建文字识别应用,获取应用的APP_ID和API_KEY,SECRET_KEY数据\最后,参考官方文档调用如下方法识别图片获取手机号码数据官网文档:https://cloud.baidu.com/doc/O...fromaipimportAipOcrdefget_phone(tel_id):"""百度OCR识别图片获取文字内容:paramtel_id::return:"""url=f'https://www.**.com/home/Phone/{tel_id}'APP_ID='262**'API_KEY='1btP8uUSzfDbji**'SECRET_KEY='NGm6NgAM5ajHcksKs0**'client=AipOcr(APP_ID,API_KEY,SECRET_KEY)result=client.basicGeneralUrl(url)-#{'words_result'7':[}],'words_result_num':1,'log_id':1527210***}print('识别到的手机号码是:',result)2-2pytesseract同样需要安装依赖包sof文字识别和图像处理#安装依赖包pip3installpillowpip3installpytesseract最后根据图片URL地址获取图片字节流,最后使用pytesseract识别图片中的文字。importioimportpytesseractimportrequestsfromPILimportImageif__name__=='__main__':#获取手机号的url地址image_url=f'https://www.**.com/home/Phone/{get_tel_id()}'resp=requests.get(image_url,headers=headers)#images.content:获取图片的二进制字节流#io.BytesIO():操作处理二进制数据#Image.open():打开图片字节流获取一个图片对象images_c=Image.open(io.BytesIO(resp.content))#使用pytesseract识别图片中的字符串,也就是手机号码phone=pytesseract.image_to_string(images_c)print(f'联系方式:{phone}')以上是应用图像伪装的常规处理方法。我们只需要找出图片的生成规则,然后用OCR识别为文字,最后拼装在上面就是本次分享的全部内容了。觉得文章还不错的话,请关注公众号:Python编程学习圈,每日干货分享,发“J”也能收到大量学习资料或上编程学习网,了解更多编程知识技术知识。