python爬虫反反爬,你几乎可以横扫大部分 css 字体加密的网站

news/2024/5/10 20:58:14/文章来源:https://blog.csdn.net/chen801090/article/details/93741860

你已经知道了对方是

如何自定义字体加密的了

在这里插入图片描述

你要想去反反爬

你就要先站在对方的角度去思考问题

有句话这么说来着

“知己知彼,才能那啥”

在这里插入图片描述

那么对于像猫眼电影、大众点评等等

那样的 css 自定义字体加密

应该怎么破呢?

接下来就是

学习 python 的正确姿势

在这里插入图片描述
有人说了

不就是把字体通过 unicode 编码吗?

在这里插入图片描述
那就简单了啊

把每个字的编码找到

然后使用字典把编码和对应的字对应起来

抓取分析的时候

直接替换不就得了

在这里插入图片描述
有道理是有道理

但是

如果我每次返回给你的编码都不一样呢?

你说死不死

在这里插入图片描述

好了好了,先别哭得那么舒服

我们来看看天猫电影票房榜单的页面

https://maoyan.com/board/1

在这里插入图片描述

在这里插入图片描述

正如你所看到的那样

这里也使用了字体加密

通过源代码我们可以看到

font-face这里制定了字体文件路径

在这里插入图片描述

还是熟悉的配方

熟悉的味道~

在这里插入图片描述

不过小老弟

还是不要开心太早

刷新几次你就会发现

(盯着下图 2 秒钟)

在这里插入图片描述
看到没有

字体文件一直在变

woc!

玩呢?
在这里插入图片描述
在这里插入图片描述
我们先把字体文件下载下来

# 把整个页面搞下来
url = 'https://maoyan.com/board/1'
html = download_html(url).decode('utf-8')

用正则把字体文件名拿一下

font_file_name = re.findall(r'//vfile.meituan.net/colorstone/(w+.woff)', html)[0]

拿到了文件名之后就构建一下url

然后把字体文件下载下来

url = 'http://vfile.meituan.net/colorstone/' + font_file_name
font_file = download_html(url)

接着把字体文件写到本地文件中

with open('fonts/' + font_file, 'wb') as f:f.write(new_file)

使用 fontTools 来获取字体

如果你之前没安装的话要安装才能用

接着我们把字体文件保存为 xml

font = TTFont('fonts/' + font_file)
font.saveXML('./'+font_file+'.xml')

在这里插入图片描述
快打开打开看看

在这里插入图片描述
哇,这些玩意

有点眼熟啊

这不就是加密的 unicode 码么

左边的 id 难道就是对应的数字?
在这里插入图片描述

恩没那么简单

就能找到聊得来的伴

尤其是在看过了那么多背叛

总是…

在这里插入图片描述

不好意思

走错片场了

回到我们刚刚的 xml 文件

往下拉一下

可以看到这个

在这里插入图片描述

这里每一个编码都对应一个 TTGlyph 对象

从各种 x y 坐标可以猜测

它应该是用来绘制一个字的

我们把任意一个对象复制一下

然后用 matplotlib 根据坐标画个图试试看

import matplotlib.pyplot as plt
import re
str = """"
<contour><pt x="130" y="201" on="1"/><pt x="145" y="126" on="0"/><pt x="216" y="60" on="0"/><pt x="270" y="60" on="1"/><pt x="332" y="60" on="0"/><pt x="417" y="146" on="0"/>.....此处省略一点代码</contour>
"""
x = [int(i) for i in re.findall(r'<pt x="(.*?)" y=', str)]
y = [int(i) for i in re.findall(r'y="(.*?)" on=', str)]
print(x)
print(y)
plt.plot(x, y)
plt.show()

运行一波

在这里插入图片描述

哈哈

妈的,uniEA78 就是 3 !

那么其它的编码也是这个道理了

还记得 python爬虫20 | 小帅b教你如何识别图片验证码 吗?

我们把那十个编码都画一遍

然后识别成数字

再封装成字典不就好了?
在这里插入图片描述

好像这样做效率不高耶

有没有别的什么办法呢

我们再请求一下猫眼的字体文件

这次返回的文件又不同了

在这里插入图片描述

打开你会发现

返回的编码都不一样了
在这里插入图片描述
在这里插入图片描述

咋整捏

还记得我们刚刚绘制的 3 么?

在这里插入图片描述

我们来搜一下新下载的文件

是不是绘制 3 的坐标也是一样的呢
在这里插入图片描述
嘿嘿

仔细看下上面两张图里面的坐标

居然一模一样

也就是说

虽然编码的名称不同

但是

它们对象里面对应的内容是一样的

对不对?

灵感来了

就是这里了

从这里下手

在这里插入图片描述

我们在第一次请求字体文件的时候

把编码对应的数字先给找出来

然后记下来

那么以后再请求到不同的字体文件的时候

虽然得到的编码不同

但是我们可以根据对象对应的内容进行判断

从而就可以得出

新的编码和旧的编码指向同一个内容

那么这两个编码对应的数字就是一样的
在这里插入图片描述

代码走起~

第一次请求获取一个字体文件

在这里插入图片描述

打开 xml 获取到 unicode 编码

接着你可以通过绘制图的方式

或者通过 fontCreator 软件打开字体文件

或者通过字符去比对每个 unicode 代表的数字

在这里插入图片描述

然后

你就可以得到相应的数字

把它写到字典里面去

在这里插入图片描述

因为每次请求得到的字体编码都不同

所以上面这个就要作为我们的判断依据

当我们再请求的时候

如果得到的是和我们一开始请求

得到的字体文件一样的话

那就直接返回我们刚刚的字典

在这里插入图片描述

不相同的话

我们就要把新的字体文件下载下来

然后对每个编码的对象跟旧的字体文件的每个编码的对象比较

如果对象是相同的话

就把旧的编码所对应的数字赋给新的编码

因为网页上显示的是 这样开头的

所以我们也要跟着换一下
在这里插入图片描述

这时候运行

就会得到新的编码和对应的数字了

在这里插入图片描述

爽啊

有了这个之后

我想爬取具体数据对你来说不在话下了吧

这里就随便获取一个电影的实时票房来举例

在这里插入图片描述

简单粗暴的使用下正则

在这里插入图片描述

爬取到编码的时候我们转化一下

就是当编码和字典列表里面的编码有相同的

就替换成数字
在这里插入图片描述

运行之后

在这里插入图片描述

看下网页

在这里插入图片描述

没毛病

再爬取下总票房试试

在这里插入图片描述

ok

依然没毛病
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_747931.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

比较好的Java 网站

比较好的Java 网站javaboys 51cto技术博客[%title%][%count%]票 [[%percent%]&#xff05;] 比较好的Java 网站1. The Source for Java Technology Collaboration(JAVA开发的官方网站) [url]http://www.java.net/[/url] - 外文 2. jGuru: FAQ Home Page 推荐 [url]http://www…

爬取某网站所有的乌云漏洞公共文章,并保存为pdf文件

鼎鼎大名的乌云网站&#xff0c;仅存在6年左右&#xff0c;就停摆&#xff0c;真是可惜。。。 从某网站爬取所有公开的乌云漏洞文章&#xff0c;保存为pdf格式&#xff0c;以作纪念学习使用 首先创建一个文件夹wooyun&#xff0c;把下面代码保存为test.py&#xff0c;然后放在该…

Nginx基础篇(八);Nginx访问认证、网站展示目录结构浏览网页

Table of Contents 一、参数说明 二、实现访问认证步骤 三、Nginx访问认证出现状态码403 forbidden的原因 四、在网站展示目录结构 需求&#xff1a;在实际工作企业中有时需要我们为网站设置访问账号和密码权限&#xff0c;这样操作后&#xff0c;只有拥有账号密码的人才能…

wp 新窗口插件_适用于您的WP网站的10个令人兴奋的新jQuery插件

wp 新窗口插件今天&#xff0c;我们将向您分享我们的jQuery驱动插件集合&#xff0c;这些集合为您喜欢的WordPress网站增加了凉爽和交互式效果。 请享用&#xff01; 另请参阅&#xff1a; 100个WordPress jQuery插件 1.破坏性谈话 它是一个phono小部件&#xff0c;可让Word…

Nginx架构篇(三);LNMP架构实现discuz和wordpress搭建:MySQL多实例、主主及主从复制、读写分离及nfs网站代码集中式管理(后续可以为数据库添加MHA,DRBD)

文章目录一、环境搭建及主从复制基础知识二、NFS服务器的配置三、Nginx服务器的配置四、PHP服务器需要做的配置&#xff08;两个PHP都是一样的配置&#xff09;五、MySQL多实例&#xff1a;主主、主从复制&#xff0c;读写分离先给3307数据库和3308数据库做主主复制再给3307数据…

LNMP+zabbix监控平台部署(采用阿里云服务器一体化部署监控wordpress网站)

部署前须知&#xff1a; 一般情况下&#xff0c;我们是将其中Zabbix-Server、Zabbix-Proxy、Zabbix-Web、Zabbix-Database专门部署在一台独立服务器上,Zabbix-Agent一般部署在需要被监控的网站的服务器上。 由于资金限制&#xff0c;本人只有一台阿里云服务器&#xff0c;所以…

jQuery网站/博客-全球最佳

这是Internet上最好的jQuery网站和博客的集合&#xff08;或者至少是到目前为止我发现的博客&#xff09;。如果您想出现在此列表中&#xff0c;请发表评论并证明自己的理由。 相关文章&#xff1a; 进入互联网的十大jQuery Gurus blog.jquery.com 写更少&#xff0c;做更多&am…

2019升级版最新Python学习路线:关于电影购票网站实现的讲解

这次的Python学习路线跟大家讲一下关于电影购票网站的实现。这几天咱们国产的哪吒很火嘛&#xff01; 1. 用户功能 同前面所有项目的用户功能&#xff0c;利用AjaxDjango系统认证QQ邮箱实现登陆注册 2. 用户未登陆会跳转到注册登录界面&#xff0c;登录后会返回至主页&#…

jquerymobile_使用jQueryMobile从桌面到移动网站的转换

jquerymobilejQuery Mobile是用于制作移动Web应用程序的强大框架。 但是&#xff0c;我们可以使用它将现有的桌面网站转换为移动形式吗&#xff1f; 可以使用MobilizeToday.com在线服务。 它们提供了基于小部件的模型&#xff0c;该模型将任何现有HTML内容表示到移动视图中。 …

使用jQueryMobile从桌面到移动网站的转换

jQuery Mobile是用于制作移动Web应用程序的强大框架。 但是&#xff0c;我们可以使用它将现有的桌面网站转换为移动形式吗&#xff1f; 可以使用MobilizeToday.com在线服务。 它们提供了基于小部件的模型&#xff0c;该模型将任何现有HTML内容表示到移动视图中。 背后的技术是X…

eyoucms 网站原创文章要怎样进行优化?

互联网一直都是在变化中的&#xff0c;而且百度、搜狗等搜索引擎的抓取方式也在不断的进行改变&#xff0c;这些都导致了网站优化手法的改变&#xff0c;如果说唯一没有变化的话就是对于原创文章的编写以及发布。但是要写出一个高质量原创的文章可不是一件简单的事情&#xff0…

用Python清理收藏夹里已失效的网站,快测试一下你的收藏夹吧

最近打开好多以前收藏的网站&#xff0c;发现好多都已经失效了&#xff0c;好多以前想看还没来得及看的内容&#xff0c;也找不见了。。。 失效的书签们 我们日常浏览网站的时候&#xff0c;时不时会遇到些新奇的东西&#xff0c;于是我们就默默的点了个收藏或者加书签。然而…

SEO删除网站的旧内容,对目前已有的排名有影响吗?

搜索引擎是一个动态变化的过程&#xff0c;而相对于网站而言&#xff0c;对于过往的内容&#xff0c;它都是一沉不变的&#xff0c;这就是为什么网站需要持续的推陈出新&#xff0c;才能使得整站排名保持长期的稳定。 但这里有一个问题&#xff0c;垂直行业的内容资源库是有限…

大型网站系统架构分析

千万级的注册用户&#xff0c;千万级的帖子&#xff0c;nTB级的附件&#xff0c;还有巨大的日访问量&#xff0c;大型网站采用什么系统架构保证性能和稳定性&#xff1f; 首先讨论一下大型网站需要注意和考虑的问题。 数据库海量数据处理&#xff1a;负载量不大的情况下select、…

用Python爬取各大网站招聘平台,终于让我给知道对口的工作

个人经历&#xff1a;低不成&#xff0c;高不就 依稀还记得15年刚出来工作那会&#xff0c;在第一个互联网公司实习&#xff0c;在公司听惯了身边人说公司这不好&#xff0c;那不好&#xff0c;作为新人的我深受影响&#xff0c;不知从何时开始就想快点结束实习期换一份更好的…

用Python爬取各大网站招聘平台,终于让我给知道对口的工作

个人经历&#xff1a;低不成&#xff0c;高不就 依稀还记得15年刚出来工作那会&#xff0c;在第一个互联网公司实习&#xff0c;在公司听惯了身边人说公司这不好&#xff0c;那不好&#xff0c;作为新人的我深受影响&#xff0c;不知从何时开始就想快点结束实习期换一份更好的…

用Python清理收藏夹里已失效的网站

失效的书签们 我们日常浏览网站的时候&#xff0c;时不时会遇到些新奇的东西&#xff08; 你懂的.jpg &#xff09;&#xff0c;于是我们就默默的点了个收藏或者加书签。然而当我们面对成百上千的书签和收藏夹的时候&#xff0c;总会头疼不已…… 尤其是昨天还在更新的程序设计…

织梦怎么样备份网站

很多用织梦的朋友不知道怎么备份网站&#xff0c;还有些朋友备份网站的方式不对。当遇到网站被黑、服务器到期等关键时刻&#xff0c;导致数据丢失&#xff0c;网站不能用。新搭建网站就得一切从头再来&#xff0c;找技术恢复&#xff0c;又是一笔不小的开支。这是一种无形的损…

网市场云建站 v4.9 更新,增加网站子账户

开发四年只会写业务代码&#xff0c;分布式高并发都不会还做程序员&#xff1f; 网市场云建站系统&#xff0c;结合云技术&#xff0c;一台2核4G服务器可以建立超过4万个网站&#xff01;打破传统建站的高成本&#xff0c;让价格不再是阻碍的门槛&#xff0c;让每个人都能有自…

Python_爬虫_爬取好大夫网站_数据清洗部分

1.前言 通过对好大夫网站内容的爬取&#xff0c;我们已经收集到好大夫的相关数据&#xff0c;并将其存入excel表中。之所以先存入excel表中&#xff0c;是因为有很多是非结构化数据&#xff0c;需要进行数据清理后在进行保存&#xff0c;excel中有很多的功能能够帮助进行数据清…