写一下关于对svg的解密

其实很多的网站也陆陆续续开始使用非人道反爬来限制爬虫了,常见的css反爬,字体反爬(就是页面源码显示什么乱七八糟的文字,但是在用户面前还是显示正常的,比如1 在源码显示可能是或者其他类似这样的字符),还有svg(数字变成svg的小图片,比较出名的有大众点评),js混淆加密,base64编码,sha1加密等等,恶心的要死(加密的代码还放的贼隐蔽,我吐了).

今天我所带来的就是关于大众或者http://www.porters.vip/confusion/food.html这个别人的demo.里面的svg的破解.

主要是总结!!!!

今天的案例就是http://www.porters.vip/confusion/food.html这个url上的demo数据作为起始点.

 

 

不多说上解密代码:

from lxml import etree
#这个string里面的就是 http://www.porters.vip/confusion/food.html demo的 svg数据

string = """




   154669136497975167479825383996313925720573
   560862462805204755437571121437458524985017
   671260781104096663000892328440489239185923
   684431081139502796807382

"""
y = 141 #15 #141 测试数据
x = 330 #7 #330 测试数据
tree = etree.HTML(string)
s38 = tree.xpath('//text[@y="38"]/text()')[0]
s83 = tree.xpath('//text[@y="83"]/text()')[0]
s120 = tree.xpath('//text[@y="120"]/text()')[0]
s164 = tree.xpath('//text[@y="164"]/text()')[0]

if y <= 42:
    print("数字:",s38[x // 14])
#这个 // 14 不是固定的,也可能是固定的,详细看看svg内容的font-size属性或者查看svg的一行行数字的增减找规律
elif y <=92:
    print("数字:", s83[x // 14])
elif y <= 128:
    print("数字:", s120[x // 14])
elif y <= 164:
    print("数字:", s164[x // 14])


#总结下基本的步骤

"""
1.取到 class名称对应下的x 轴 和 y轴,将里面的 - 号弄掉
2.获取svg里面的数据,用xpath或者re提取出来,取得条件是根据y的值来取
3.以y轴为基准,进行判断,如果小于或者等于某一个y轴的数据,那么就让x进去 // 一个固定参数,具体大概就在svg页面,或者
你也可以查看它罗列出的所有数字,并且找出规律,然后进行 //即可!
4.到这里基本svg的解码就完成了
"""

然后我想说的是,不要执着于代码,思路才是灵魂.我写下来主要是为了自己忘记了,以后遇到这种恶心玩意就麻烦了.毕竟好记性不如烂笔头.

不用点赞.谢谢!

 

你可能感兴趣的:(爬虫)