2019独角兽企业重金招聘Python工程师标准>>>
某次web编程,思考着辛辛苦苦编写的web别人 右键查看源码不就一目了然了?当然有些人会把script写入外部js引入,但也只是增加了查看源码的步骤。我就想把整个页面html都加密下,只是右键查看时,看不出代码。那么是否可行?用哪种方法?
首先html代码的动态生成,而不是直接输出。就需要js的document.write,动态插入html神器啊!
那么接下来就是考虑编码问题了,如果直接 document.write("...."); 也是可以的但是这跟不加密没啥区别。但是我还是先用这种方法测试了下,遇到了点麻烦,web编程经常遇到的多个双引号导致的字符串错误问题。为了避免这种双引号问题,就必须用编码来绕过。
现在流行的已知编码就几种,比如json,base64.那就先用json来试试。
json编码 运行如下:
右键查看源码,可以看见代码至少按我的思路运行正常了,而且遇到双引号问题也不出错了。中文被json 编码了,html代码还是被看到了大部分。加密的效果起到了1%吧。
接着试试base64
base64编码 运行如下:
右键查看代码,可以看出html全部加密了,但是根据数据长短分段换行还是可以看出html结构。 这个还是单行调用。
下面 改成链式调用
代码已经完全看不出原来的结构了。哈哈
接下来尝试用2进制编码:
接下来尝试用8进制编码:
接下来尝试用10进制编码(顺便增加了点无用符号增强混淆):
接下来尝试用16进制编码(无分隔符):
接下来尝试用16进制编码(有分隔符):
接着想弄个密码输入框,输入正确密码才显示。
思路是 php端把真实网页des加密,http传输,网路传输的只是一个大变量字符串
必须des 用密码解密才能知道,这个des加密好处是可以网络加密传输数据,虽然http是透明的,但内容可以加密码锁数据,别人看到的就是一堆乱码html,不知道实际数据, des虽然比较弱,但破解不是那么简单的
浏览器访问网页,先输入密码,解密,成功则显示真实网页
其实还有其他编码还有什么压缩编码,我也不怎么清楚,而且要动态输出html,我用的php要和js配套才行,一方加密一方解密,不匹配或没有适合的编码,就无法完成。
结语:这种加密纯属本人无聊研究,只是web服务器输出html加了一层密,客户端接收后js动态解码输出,虽然右键查看不到代码,但浏览器开发者工具会显示运行后的html代码,一览无余了。适合那些不想让爬虫看到的网站。爬虫爬到的数据是加密后的乱码,除非有爬虫仿浏览器能运行js。这种加密后的网站爬虫估计会非常不友好。因为爬虫无法识别,不知道你网站标题内容,连接图片,但是一番研究变异编码对网页也有了更深的理解和认识了。
完。
欢迎任何形式的转载,但请务必注明出处,尊重他人劳动成果。