svg
映射反爬虫利用来浏览器和编程语言在渲染方面的差异,以及svg
和css
定位这样的前端知识。
不管是数字还是英文,又或者是中文,都可以使用svg
映射,以达到反爬虫的策略,正如上图页面里面,d
标签里面什么都没有,只有一个class
属性,但是页面却可以显示出相应的内容
观察抓包情况:
可以看到页面加载来两个文件,分别是css
和svg
看到css
使用了background-image
属性,说明它的背景是一个图片,还有下面class
属性值对应使用来定位功能,可能联想一下“精灵图”的用法,需要了解的是,svg
是用文本描述图像内容的矢量图像格式,所以,svg
并不能算是一张真正的精灵图,它的内容是:
下面,用70行代码,破解这种css
和svg
映射的反爬虫策略
import requests
import re
from parsel import Selector
# 使用python代码实现自动映射,先拿到两个文件的URL
url_css = "http://www.porters.vip/confusion/css/food.css"
url_svg = "http://www.porters.vip/confusion/font/food.svg"
# 拿到需要映射的HTML标签的class属性的值
css_class_name = "vhkbvu"
# 发送请求,拿到对应的文本
css_resp = requests.get(url_css