爬虫 人人车字体反爬分析(含源码)

本文探讨了字体反爬策略,以人人车网站为例,分析其如何通过改变数字顺序来防止爬取。作者发现了一个规律,并展示了如何通过逆向处理还原被加密的标题。
摘要由CSDN通过智能技术生成

严重声明:本文仅用于学习交流,不得用于商业用途,同时希望大家遵循robots协议,维护网络和谐。
本猿最近在逛一些网站的时间。在打开浏览器的f12查看人家前端代码咋写的时候,经常会发现就是页面上显示的内容和源码里面的不一样,然后自己请求一遍也还是不一样,奇怪,猿,妙不可言?本着猿精神,上网查了下,这种属于字体反爬策略。应用的还是不少的,所以,在这里将在下对字体反爬的见解写一下。

  • 先观察人人车网站,看看人家的实现: 人人车
  1. 打开一个详情页,f12看页面标签,可以发现标题里面年款啥的页面上展示给我们的和我们看到的不一样。在查看了很多页面后发现,人人车字体变化的都是数字:
    图1 页面源码

  2. 查看标题css样式的时候发现,标题标签和一个css样式利用属性名关联上了,所以这个属性名肯定有问题:图2 css样式

  3. 查看服务器给我们发的响应包,直接发现一个跟上面标签属性名一样的字体文件,利用谷歌浏览器的规范输出,直接查看,发现最下面的一行数字顺序是被打乱的。另外还有一个字体文件,但是数字顺序是正常的:
    图3-1 字体文件1图3-2 字体文件2

  4. 我们看这两串数字,因为i标题采用了个乱序数字字体文件名的样式,暂时总结出个规律:就是本应该在1的位置上他换上了2,2>1,3>4,4>3,5>8,8>5:
    图4 发现规律

  5. 按照4中的规律再看首页的源码和展示给我们的标题,猿来如此:
    图5

  6. 应用上面过程查看其它页面,发现都是上面这样的套路,但是这个字体文件的url和内容是变化的。

  • 下面是我对人人车字体加密的逆向处理,一个小demo,所以就直接拿加密的标题来演示:

    测试代码,完整:

    # !/usr/bin/python3
    # -*- coding: utf-8 -*-
    """
    # @Time      :   2020/4/25 13:32
    # @Author    :   hupoc
    # @File      :   second_hand_car_renrenche.py
    # @Desc      :   
    """
    import io
    import os
    import requests
    from fontTools.ttLib import TTFont
    from scrapy import Selector
    
    
    def font_transfor(translate_text, html, url):
        """
        网页上使用字体文件的文本转换
        :param translate_text: 需要转换的文本
        :param html: 经过scrapy.Selector()转换后的响应对象
        :param url: 请求的url
        :return: 转换后的文本
        """
        # 获取字体名所在标签文本
        font_interface_str = html.xpath("//div[@class='title']/h1/@class"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值