58同城 字体反爬理解...和猫眼不同

import requests
import re
import base64
import io
from lxml import etree
from fontTools.ttLib import TTFont

url = ‘https://gz.58.com/zufang/?utm_source=market&spm=u-2d2yxv86y3v43nkddh1.BDPCPZ_BT&PGTID=0d100000-0000-31f5-5967-5384271a3920&ClickID=2‘
headers = {
    ‘User-Agent‘:‘Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)‘
}
response = requests.get(url=url,headers=headers)
# 获取加密字符串
base64_str = re.search("base64,(.*?)‘\)",response.text).group(1)
b = base64.b64decode(base64_str)
font = TTFont(io.BytesIO(b))
bestcmap = font[‘cmap‘].getBestCmap()
newmap = dict()
for key in bestcmap.keys():
    value = int(re.search(r‘(\d+)‘, bestcmap[key]).group(1)) - 1
    key = hex(key)
    newmap[key] = value

# 把页面上自定义字体替换成正常字体
response_ = response.text
for key,value in newmap.items():
    key_ = key.replace(‘0x‘,‘&#x‘) + ‘;‘
    if key_ in response_:
        response_ = response_.replace(key_,str(value))

rec = etree.HTML(response_)
lis = rec.xpath(‘//ul[@class="house-list"]/li‘)
for li in lis:
    money = li.xpath(‘.//div[@class="money"]/b/text()‘)[0]
    if money:
        print(money)

和猫眼不同,猫眼是把编码对象在glyf         而58则是在cmap中

https://www.cnblogs.com/eastonliu/p/9925652.html

原文地址:https://www.cnblogs.com/zengxm/p/11107972.html

时间: 2024-10-29 17:57:45

58同城 字体反爬理解...和猫眼不同的相关文章

python解析字体反爬

爬取一些网站的信息时,偶尔会碰到这样一种情况:网页浏览显示是正常的,用python爬取下来是乱码,F12用开发者模式查看网页源代码也是乱码.这种一般是网站设置了字体反爬 一.58同城 用谷歌浏览器打开58同城:https://sz.58.com/chuzu/,按F12用开发者模式查看网页源代码,可以看到有些房屋出租标题和月租是乱码,但是在网页上浏览却显示是正常的. 用python爬取下来也是乱码: 回到网页上,右键查看网页源代码,搜索font-face关键字,可以看到一大串用base64加密的字

字体反爬-动态字库

这次是动态字体库的字体反爬 猫眼电影榜单国内票房榜,地址:https://maoyan.com/board/1 可以看出又是字体反爬,需要获得字体文件,定位字体文件的url,在页面或css里搜@font-face或font-famil 在network选font标签刷新页面几次发现每次用的字体都不一,加密用的字体库是动态的,手动建立关系表然后全局替换的方法不管用了. 解决方案 建立字符和动态字体库unicode的联系 原理 首先要了解字体文件内部有很多表,上篇用到记录unicode索引和字形关系

Python爬虫入门教程 64-100 反爬教科书级别的网站-汽车之家,字体反爬之二

说说这个网站 汽车之家,反爬神一般的存在,字体反爬的鼻祖网站,这个网站的开发团队,一定擅长前端吧,2019年4月19日开始写这篇博客,不保证这个代码可以存活到月底,希望后来爬虫coder,继续和汽车之间对抗. CSDN上关于汽车之家的反爬文章千千万万了,但是爬虫就是这点有意思,这一刻写完,下一刻还能不能用就不知道了,所以可以一直不断有人写下去.希望今天的博客能帮你学会一个反爬技巧. 今天要爬去的网页 https://car.autohome.com.cn/config/series/59.htm

Python爬虫进阶 | 某音字体反爬分析

字体反爬案例 爬取一些网站的信息时,偶尔会碰到这样一种情况:网页浏览显示是正常的,用 python 爬取下来是乱码,F12用开发者模式查看网页源代码也是乱码.这种一般是网站设置了字体反爬. 1. 准备url 网址: https://www.iesdouyin.com/share/user/88445518961 2. 获取数据 分析字体加密方式 任务:爬取个人信息展示页中的关注.粉丝人数和点赞数据,页面内容如图 下 所示. 在编写代码之前,我们需要确定目标数据的元素定位.定位时,我们在 HTML

字体反爬----字体加密

学习用字体对数据进行加密来反爬 字体加密首先得准备一个字体库,测试的话可以在网上随便找,本例字体是本墨悠圆,链接:http://www.zhaozi.cn/html/fonts/china/benmo/2019-02-01/25085.html 字体重命名成bmyy.ttf 从字体库提取要加密的字符需要用到fonttools fonttools安装: pip install fonttools 使用方法: pyftsubset <字体文件> --text=<需要的字形> --out

爬虫之路: 字体文件反爬二(动态字体文件)

上一篇解决了但页面的字体反爬, 这篇记录下如何解决动态字体文件, 编码不同, 文字顺序不同的情况 源码在最后 冷静分析页面 打开一个页面, 发现字体文件地址是动态的, 这个倒是好说, 写个正则, 就可以动态匹配出来 先下载下来一个新页面的字体文件, 做一下对比, 如图 mmp, 发现编码, 字体顺序那那都不一样, 这可就过分了, 心里一万个xxx在奔腾 头脑风暴ing.gif (与伙伴对话ing...) 不着急, 还是要冷静下来, 再想想哪里还有突破点 同一个页面的字体文件地址是动态的, 但是,

58同城南京品牌公馆数据爬取

做一个租房信息的网站,要爬取58同城上南京品牌公馆的房源信息,因为数字被重新编码了,折腾了一天,记录一下整个过程,留着后面使用. 1,网页分析和字体文件反爬 简单看了下url(https://nj.58.com/pinpaigongyu/pn/1/),比较简单,替换下网址中页码数,就可以一直翻页并进行爬取.分析了下源代码需要爬取的信息,如下图所示,有一些怪异的汉字,刚开始以为是编码问题,后来看了下爬取下来的网页,发现是数字被替换了,应该是有特殊的字体文件. 在script标签中找了一会,发现了下

python反反爬,爬取猫眼评分

python反反爬,爬取猫眼评分.解决网站爬取时,内容类似:$#x12E0;样式,且每次字体文件变化.下载FontCreator . 用FontCreator打开base.woff.查看对应字体关系 初始化时将对应关系写入字典中. 1 #!/usr/bin/env python 2 # coding:utf-8 3 # __author__ = "南楼" 4 5 6 import requests 7 import re 8 import os 9 10 from fontTools.

前端反爬虫策略--font-face 猫眼数据爬取

1 .font-face定义了字符集,通过unicode去印射展示. 2 .font-face加载网络字体,我么可以自己创建一套字体,然后自定义一套字符映射关系表例如设置0xefab是映射字符1,0xeba2是映射字符2,以此类推.当需要显示字符1时,网页的源码只会是0xefab,被采集的也只会是 0xefab,并不是1 3 .但是对于正常的用户来说则没有影响,因为浏览器会加载css的font字体为我们渲染好,实时显示在网页中. 4 .所以我们需要做的是,如何在判断请求web字体的是机器人或者是