听说学Python字体反爬的人,都打开过这篇博客,自如字体反爬,图片字体反爬 R26
【摘要】 ⛳️ 自如 实战场景我们又碰到了一个字体反爬的站点,自如。该站点的字体反爬不是用字体文件实现的,而是基于图片+CSS,具体如下图所示。这里运用 CSS 背景偏移技术实现数字的展示。字体图片如下所示。图片宽度和高度的比例是 300*28,其中 300 像素被等比例放置了 10 个数字,即每 30 个像素一个数字,实测间隔是 21.4 个像素。后续可以参考该值做区分。下面还需要确定一下每次刷新...
⛳️ 自如 实战场景
我们又碰到了一个字体反爬的站点,自如。该站点的字体反爬不是用字体文件实现的,而是基于图片+CSS,具体如下图所示。
这里运用 CSS 背景偏移技术实现数字的展示。
字体图片如下所示。
图片宽度和高度的比例是 300*28
,其中 300 像素被等比例放置了 10 个数字,即每 30 个像素一个数字,实测间隔是 21.4 个像素。
后续可以参考该值做区分。
下面还需要确定一下每次刷新,图片是否发生变化。
刷新了一下,发生了变化  ̄ □  ̄||
但是原理是一样的,就是获取图片之后,然后解析对应的图片,通过 OCR 技术,识别文字。
⛳️ 自如 实战编码
获取源码,解析图片地址。
import requests
from lxml import etree
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.54 Safari/537.36"
}
res = requests.get('https://www.ziroom.com/z/',headers=headers)
tree = etree.HTML(res.text)
img_style = tree.xpath("//span[@class='num']/@style")[0]
# 不用正则,直接截取字符串
print(len('background-image: url(//'))
print(len(');background-position: -42.8px'))
# 不用正则,直接截取字符串
img_src = img_style[24:len(img_style)-30]
然后通过 OCR 软件识别相关信息,然后进行提取。
# 下载图片文件,通过 OCR 识别出数字
import ddddocr
ocr = ddddocr.DdddOcr()
res = requests.get('https://'+img_src,headers=headers)
# print(res.content)
# with open('./images/num_img1.png','wb') as f:
# f.write(res.content)
res = ocr.classification(res.content)
print(res)
测试中识别的数字为 5471380629,然后将其拆解即可。
测试发现截取图片地址的时候,有时候会出现图片地址错误,建议大家依旧使用正则表达式获取。
最后就是坐标与数字的对应关系了
-21.4
:第一个数字-42.8
:第二个数字-64.2
:第三个数字
其余的都参考这个原理即可。
📢📢📢📢📢📢
💗 你正在阅读 【梦想橡皮擦】 的博客
👍 阅读完毕,可以点点小手赞一下
🌻 发现错误,直接评论区中指正吧
📆 橡皮擦的第 670 篇原创博客
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)