# 安居客:base64加密,属于css加密的一种
# 思路:
# 1. 请求页面,获取base64加密的字符串
# 2. 使用base64模块进行解密
# 3. 定义字典{16进制数:真实的值}
# 4. 替换即可
import requests,re,base64,io
from fontTools.ttLib import TTFont
def get_dict(base64_content):
# 加密的内容,进行解密,需要使用base64模块,返回二进制类型数据
real_content = base64.b64decode(base64_content)
# 保存到woff文件中
with open('anjuku.woff','wb') as fp:
fp.write(real_content)
# print(real_content)
# 读取内容
# TTFont(文件) ---> 读取文件
# TTFont(bytes) ----> 读取二进制类型的内容,内存io,需要使用io模块
font = TTFont(io.BytesIO(real_content))
# 保存到xml中
# font.saveXML('ajk.xml')
# 获取cmap
# getBestCmap():返回一个字典,字典中的key是10进制数
cmap = font.getBestCmap()
dic = {hex(k):v for k,v in cmap.items()}
# 找规律来对应
data = {}
for k,v in dic.items():
data[k] = int(v[-2::])-1
return data
def get_content():
# 发起请求,接收响应
response = requests.get(url=base_url,headers=headers)
content = response.text
# 提取base64加密的字符串
base64_pattern = re.compile(r'base64,(.*?)\'\)')
base64_content = base64_pattern.findall(content)[0]
data = get_dict(base64_content)
# 开始替换
for k,v in data.items():
content = content.replace('&#x'+k[-4::]+';',str(v))
print(content)
...
if __name__ == '__main__':
# 定义基础URL
base_url = 'https://bj.zu.anjuke.com/?from=navigation'
# 定义请求头
headers = {
'user-agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.83 Safari/537.36',
}
get_content()
爬虫 base64加密
最新推荐文章于 2021-08-07 11:28:23 发布