登陆进入
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
</body>
</html>
欢迎光临
<script langguage="javascript">
function loopy(){
var mima ="";
while(mima!="176901111*"){mima=prompt("请输入我的手机号码");}
alert("打开了"); }
loopy()
</script>
</body>
[赞]关注一下天天新的html代码发布
[比心][比心][比心][比心][比心][比心][比心][比心][比心][比心][比心]
使用JavaScript加密转化技术将Html变为密文,以此保护html源代码,这便是Html源码加密。
同时,这种加密技术还可实现网页反调试、防复制、链接加密等功能。
什么情况下需要Html源代码加密?
Html源代码加密可用于哪些场景?
Html源代码加密可用于以下需求场合:
Html源代码保护;防内容爬虫、防分析、防嵌套、防内容复制。使Html代码不会轻易被他人获取。
Html源代码加密,可以实现哪些功能效果?
Html源代码加密,可以实现以下效果:
加密的Html源码、加密的页面链接;禁用JavaScript时页面不渲染、禁止右键、禁止ctrl+c、ctrl+v、禁止iframe嵌套,等。
以下进行一次Html加密实操。
测试html代码:
<html>
<head>
<title>Html源代码加密</title>
<meta name="description" content="JShaman Html网页源码加密" />
<meta name="keywords" content="Html加密、网页源码加密" />
</head>
<body>
<h1>
Html加密、网页源码加密
</h1>
<a href="https://www.jshaman.com" target="_blank">JShaman.com</a>
<script>
alert("test");
</script>
</body>
</html>
使用JShaman的Html源代码加密:https://www.jshaman.com/enhtml/
加密功能启用:僵尸元素植入、链接加密、SEO优化、JS混淆加密。
这几项功能的说明如下:
僵尸元素植入:
给页面中随机插入div、span、p等元素,形成新的节点,这些节点中包含内容,但不显示、不影响页面布局。
由于其真实存在,因此会对DevTool(浏览器开发者工具)造成干扰,使用无法从“DOM和样式探查器”中直接复制页面内容。
链接加密:
对网页中所有链接(“a href”语句)进行加密,隐藏链接地址。
以此防止链接被获取、防止爬虫根据链接获得其它页面地址。
SEO优化:
使加密后的Html代码中包换与原页面相同的title、keywords、description,及全页面渲染后展示的文字内容。
以此增加页面对搜索引擎的友好性,使网页更容易被收录,并有排名优化效果。
JS混淆加密:
对Html编码后的JavaScript代码进行混淆加密,使代码无法阅读、理解。
并且是混淆加密是多态特性,一次一结果,永不重复。
加密结果、加密后的Html代码:
加密后的Html与加密前一样使用,无任何区别。
加密效果
将其保存为Html文件后,打开查看效果:
1、首先,源码是密文状态, 是混淆加密过的JS代码,不会被人“查看源码”即得到Html源码。
2、加密的链接,链接虽然被加密(从源码中只能看到错误的链接地址),但不会影响链接的正常点击,这还是比较神奇的,如下图:
注:有人疑惑:从”查看器”中还是能看到“源码”,是不是没有起到加密效果呢?
这里需要澄清:开发者工具“查看器”中看到的内容,是Html代码经浏览器渲染的结果代码,不是源码,它是必须能被渲染出来的,如果加密代码不能渲染,页面也将不能显示。
而加密,首先必须保证的是加密后的html代码能正常使用。对吧?
其次,即使是渲染后的代码,其中链接也加密了、也有了僵尸节点、还包含了加密代码,等等。它跟原始的Html代码还是有不小差异的,依然保护着原始Html代码。
3、随机插入的僵尸节点,节点内容也是随机的。
4、用于SEO的节点内容,内容是原Html页面中的核心文字,它会使加密后的Html代码对搜索引擎收录依然友好。如下图:
而且title、description也是原样保留:
综上展示,简单总结:
Html源代码加密,有效、有用!不错。
已经知道了对方是
如何自定义字体加密的了
你要想去反反爬
你就要先站在对方的角度去思考问题
有句话这么说来着
“知己知彼,才能那啥”
那么对于像猫眼电影、大众点评等等
那样的 css 自定义字体加密
应该怎么破呢?
接下来就是
学习 python 的正确姿势
有人说了
不就是把字体通过 unicode 编码吗?
那就简单了啊
把每个字的编码找到
然后使用字典把编码和对应的字对应起来
抓取分析的时候
直接替换不就得了
有道理是有道理
但是
如果我每次返回给你的编码都不一样呢?
你说死不死
好了好了,先别哭得那么舒服
我们来看看天猫电影票房榜单的页面
https://maoyan.com/board/1
正如你所看到的那样
这里也使用了字体加密
通过源代码我们可以看到
font-face这里制定了字体文件路径
还是熟悉的配方
熟悉的味道~
不过小老弟
还是不要开心太早
刷新几次你就会发现
(盯着下图 2 秒钟)
看到没有
字体文件一直在变
woc!
玩呢?
我们先把字体文件下载下来
# 把整个页面搞下来 url = 'https://maoyan.com/board/1' html = download_html(url).decode('utf-8')
用正则把字体文件名拿一下
font_file_name = re.findall(r'//vfile.meituan.net/colorstone/(\w+\.woff)', html)[0]
拿到了文件名之后就构建一下url
然后把字体文件下载下来
url = 'http://vfile.meituan.net/colorstone/' + font_file_name font_file = download_html(url)
接着把字体文件写到本地文件中
with open('fonts/' + font_file, 'wb') as f: f.write(new_file)
使用 fontTools 来获取字体
如果你之前没安装的话要安装才能用
接着我们把字体文件保存为 xml
font = TTFont('fonts/' + font_file) font.saveXML('./'+font_file+'.xml')
快打开打开看看
哇,这些玩意
有点眼熟啊
这不就是加密的 unicode 码么
左边的 id 难道就是对应的数字?
恩没那么简单
就能找到聊得来的伴
尤其是在看过了那么多背叛
总是....
不好意思
走错片场了
回到我们刚刚的 xml 文件
往下拉一下
可以看到这个
这里每一个编码都对应一个 TTGlyph 对象
从各种 x y 坐标可以猜测
它应该是用来绘制一个字的
我们把任意一个对象复制一下
然后用 matplotlib 根据坐标画个图试试看
import matplotlib.pyplot as plt import re str = """" <contour> <pt x="130" y="201" on="1"/> <pt x="145" y="126" on="0"/> <pt x="216" y="60" on="0"/> <pt x="270" y="60" on="1"/> <pt x="332" y="60" on="0"/> <pt x="417" y="146" on="0"/> .....此处省略一点代码 </contour> """ x = [int(i) for i in re.findall(r'<pt x="(.*?)" y=', str)] y = [int(i) for i in re.findall(r'y="(.*?)" on=', str)] print(x) print(y) plt.plot(x, y) plt.show()
运行一波
哈哈
妈的,uniEA78 就是 3 !
那么其它的编码也是这个道理了
还记得 python爬虫20 | 小帅b教你如何识别图片验证码 吗?
我们把那十个编码都画一遍
然后识别成数字
再封装成字典不就好了?
好像这样做效率不高耶
有没有别的什么办法呢
我们再请求一下猫眼的字体文件
这次返回的文件又不同了
打开你会发现
返回的编码都不一样了
咋整捏
还记得我们刚刚绘制的 3 么?
我们来搜一下新下载的文件
是不是绘制 3 的坐标也是一样的呢
嘿嘿
仔细看下上面两张图里面的坐标
居然一模一样
也就是说
虽然编码的名称不同
但是
它们对象里面对应的内容是一样的
对不对?
灵感来了
就是这里了
从这里下手
我们在第一次请求字体文件的时候
把编码对应的数字先给找出来
然后记下来
那么以后再请求到不同的字体文件的时候
虽然得到的编码不同
但是我们可以根据对象对应的内容进行判断
从而就可以得出
新的编码和旧的编码指向同一个内容
那么这两个编码对应的数字就是一样的
代码走起~
第一次请求获取一个字体文件
打开 xml 获取到 unicode 编码
接着你可以通过绘制图的方式
或者通过 fontCreator 软件打开字体文件
或者通过字符去比对每个 unicode 代表的数字
然后
你就可以得到相应的数字
把它写到字典里面去
因为每次请求得到的字体编码都不同
所以上面这个就要作为我们的判断依据
当我们再请求的时候
如果得到的是和我们一开始请求
得到的字体文件一样的话
那就直接返回我们刚刚的字典
不相同的话
我们就要把新的字体文件下载下来
然后对每个编码的对象跟旧的字体文件的每个编码的对象比较
如果对象是相同的话
就把旧的编码所对应的数字赋给新的编码
因为网页上显示的是 这样开头的
所以我们也要跟着换一下
这时候运行
就会得到新的编码和对应的数字了
爽啊
有了这个之后
我想爬取具体数据对你来说不在话下了吧
这里就随便获取一个电影的实时票房来举例
简单粗暴的使用下正则
爬取到编码的时候我们转化一下
就是当编码和字典列表里面的编码有相同的
就替换成数字
运行之后
看下网页
没毛病
再爬取下总票房试试
ok
依然没毛病
*请认真填写需求信息,我们会在24小时内与您取得联系。