利用爬虫破解简单Custom font

Peggy ·
更新时间:2024-09-20
· 711 次阅读

利用爬虫破解简单Custom font

持续更新第二弹!

前期准备 前提说明:本次选取实习僧的代码字体加密进行破解,需要注意的是,实习僧的字体加密每隔一段时间会发生变化,但破解方法大同小异。 对象说明:本次选取实习僧网页中Python实习薪资进行破解,前面一些代码不做过多叙述,主要分享破解方法。 代码破解 铺垫代码展示: import requests from bs4 import BeautifulSoup headers={"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.163 Safari/537.36"} def detail_data(url):#定义一个函数,方便操作。 html=requests.get(url,headers=headers) soup=BeautifulSoup(html.text,'lxml') title=soup.select('.new_job_name span')[0].get_text() salary=soup.select('.job_msg span')[0].get_text() print(title,salary) for i in range (1,4): url="https://www.shixiseng.com/interns?page={}&keyword=python&type=intern".format(i) html=requests.get(url,headers=headers) soup=BeautifulSoup(html.text,"lxml") detail_urls=soup.select('.f-l .intern-detail__job p a') for d in detail_urls: detail_data(d['href']) 出现乱码: 数据实习生 -/天 Python/C++/C#软件开发工程师 -/天 后端开发实习生 -/天 金融工程实习生 -/天 分析乱码:首先新建一个测试py,然后转换为utf8编码形式,多选取几个数据,研究其内在规律,因为篇幅原因,此次只选取6个数字。 print('-'.encode('utf8')) #200-250 #b'\xee\x8b\x87\xee\x87\xac\xee\x87\xac-\xee\x8b\x87\xef\x93\xbf\xee\x87\xac' #120-180 #b'\xee\x8b\x87\xef\x9f\xa9\xee\x8b\x87\xee\x87\xac-\xef\x9f\xa9\xee\x9d\xa1\xee\x87\xac' #80-120 #b'\xee\x8b\x87\xef\x9f\xa9\xee\x8b\x87\xee\x9d\xa1\xee\x87\xac-\xef\x9f\xa9\xee\x8b\x87\xee\x87\xac #150-200 #b'\xee\x8b\x87\xef\x9f\xa9\xee\x8b\x87\xee\x9d\xa1\xef\x9f\xa9\xef\x93\xbf\xee\x87\xac-\xee\x8b\x87\xee\x87\xac\xee\x87\xac #50-50 #b'\xee\x8b\x87\xef\x9f\xa9\xee\x8b\x87\xee\x9d\xa1\xef\x9f\xa9\xef\x93\xbf\xef\x93\xbf\xee\x87\xac-\xef\x93\xbf\xee\x87\xac #250-300 #b'\xee\x8b\x87\xef\x9f\xa9\xee\x8b\x87\xee\x9d\xa1\xef\x9f\xa9\xef\x93\xbf\xef\x93\xbf\xee\x8b\x87\xef\x93\xbf\xee\x87\xac-\xee\x8d\xad\xee\x87\xac\xee\x87\xac #可以发现规律,‘—’后每三个编码表示一个数字,可以将每个数字和编码对应起来,注意需要多次确认。 #0 \xee\x87\xac #1 \xef\x9f\xa9 #2 \xee\x8b\x87 #3 \xee\x8d\xad #5 \xef\x93\xbf #8 \xee\x9d\xa1 代码转换:因为是通过utf8进行破译的,所以在开始和结束时都要记得转换。 import requests from bs4 import BeautifulSoup headers={"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.163 Safari/537.36"} def detail_data(url):#定义一个函数,方便操作。 html=requests.get(url,headers=headers) soup=BeautifulSoup(html.text,'lxml') title=soup.select('.new_job_name span')[0].get_text() salary=soup.select('.job_msg span')[0].get_text().encode('utf8') salary=salary.replace(b'\xee\x87\xac',b'0') salary=salary.replace(b'\xef\x9f\xa9',b'1') salary=salary.replace(b'\xee\x8b\x87',b'2') salary=salary.replace(b'\xee\x8d\xad',b'3') salary=salary.replace(b'\xef\x93\xbf',b'5') salary=salary.replace(b'\xee\x9d\xa1',b'8') salary=salary.decode('utf8') print(title,salary) for i in range (1,4): url="https://www.shixiseng.com/interns?page={}&keyword=python&type=intern".format(i) html=requests.get(url,headers=headers) soup=BeautifulSoup(html.text,"lxml") detail_urls=soup.select('.f-l .intern-detail__job p a') for d in detail_urls: detail_data(d['href']) 结果图: 后端开发实习生 150-200/天 金融工程实习生 150-150/天 后台实习生 120-200/天 补充:因为破解数字有限,所以有些还是无法显示,如果要全部显示就可以按照以上方法将数字编码补全即可。
作者:初学苟



爬虫 font

需要 登录 后方可回复, 如果你还没有账号请 注册新账号