爬虫 base64加密

# 安居客: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()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值