利用爬虫破解简单Custom font

利用爬虫破解简单Custom font

持续更新第二弹!

前期准备

  1. 前提说明:本次选取实习僧的代码字体加密进行破解,需要注意的是,实习僧的字体加密每隔一段时间会发生变化,但破解方法大同小异。
  2. 对象说明:本次选取实习僧网页中Python实习薪资进行破解,前面一些代码不做过多叙述,主要分享破解方法。

代码破解

  1. 铺垫代码展示:
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'])
  1. 出现乱码:
数据实习生 -/天
Python/C++/C#软件开发工程师 -/天
后端开发实习生 -/天
金融工程实习生 -/
  1. 分析乱码:首先新建一个测试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
  1. 代码转换:因为是通过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'])
  1. 结果图:
后端开发实习生 150-200/天
金融工程实习生 150-150/天
后台实习生 120-200/
  1. 补充:因为破解数字有限,所以有些还是无法显示,如果要全部显示就可以按照以上方法将数字编码补全即可。
发布了2 篇原创文章 · 获赞 3 · 访问量 37

猜你喜欢

转载自blog.csdn.net/qq_46273905/article/details/105421399
今日推荐