
javascript
文章平均质量分 64
zhangge3663
这个作者很懒,什么都没留下…
展开
-
js中setTimeout和clearTimeout的使用
setTimeout,延迟n秒后执行指定代码clearTimeout,清除计时器<html> <head> <script type="text/javascript"> var c=0; var t function timedCount() { document.getElementById('txt').value = c转载 2021-07-28 10:16:11 · 692 阅读 · 0 评论 -
JS实现数组去重(重复的元素只保留一个)
1.遍历数组法它是最简单的数组去重方法(indexOf方法)实现思路:新建一个数组,遍历去要重的数组,当值不在新数组的时候(indexOf为-1)就加入该新数组中;var arr=[2,8,5,0,5,2,6,7,2];function unique1(arr) { var hash = []; for (var i=0; i<arr.length; i++) { if (hash.indexOf(arr[i]) == -1) {转载 2021-07-28 08:22:11 · 1803 阅读 · 0 评论 -
<script>放在head内和body内有什么区别
加载的顺序不一样,你可以把HTML看成从上往下加载的。例如在网速慢的情况下把js代码放到body底部用户会先看到网页结构,等js加载完成后才出现特效。区别简述:在HTML body部分中的JavaScripts会在页面加载的时候被执行。在HTML head部分中的JavaScripts会在被调用的时候才被执行,但是在主页和其余部分代码之前预先装载。1.JavaScript应放到哪里head 部分中的脚本: 需调用才执行的脚本或事件触发执行的脚本放在HTML的head部分中。当你把脚本转载 2021-07-28 07:48:29 · 508 阅读 · 0 评论 -
JS破解专题|光汇云油登录算法
光汇云油加密JS分析我们在光汇云油的登录页发起登录,会发现POST请求包中有一个加密的params参数,全局搜索之后数量太多了,所以改用XHR断点了。当然,Initiator里边的调用栈也是可以的,比如其中的doSubmit,两种办法定位过去都行。发现postRequest此时包含着链接"/api/member/account/signin",这个时候里边还没有params,所以下断点跟进。点跟进之后浏览一下代码,发现疑似params生成函数:这里的n如下,passwor转载 2021-03-10 13:45:09 · 188 阅读 · 0 评论 -
js中实现base64加密、解密
//base64加密 解密/* //1.加密var result = Base.encode('125中文'); //--> "MTI15Lit5paH"//2.解密var result2 = Base.decode(result); //--> '125中文'*/~(function(root, factory) { if (ttypeof define === "function" && define.amd) { defi.转载 2021-02-04 11:36:46 · 2884 阅读 · 0 评论 -
有没有可以在JavaScript里可以用的锁?
问题:我想用localStorage在多个tab下共享数据,但是看了下localStorage里面没有像C++的Mutex一样的锁,那我怎么保证原子的读和写?答:C++的mutex是使用操作系统的原子性操作实现的,在浏览器环境下没有什么参考的价值。不过,在这篇文章里面,大牛Lamport介绍了利用两块共享区域实现快速锁的算法,如下所示:假设有两块共享的区域x和y,以及进程的id,以下图的方式进入关键区域进入关键区域需要的操作至少需要: 写x -> 读y -> 写y ->转载 2020-12-10 13:54:07 · 530 阅读 · 0 评论 -
js click 与 onclick 事件绑定,触发与解绑
click 与 onclick1.onclick 事件会在对象被点击时发生。<input id="btn1" type="button" onclick="test();" />function test() { alert("我是行间事件");}当点击id="btn1"时,触发onclick事件2.onclick事件会在click事件之前执行<input id="btn2" type="button" onclick="test();" /&.转载 2020-11-09 19:40:52 · 1151 阅读 · 0 评论 -
注入eval,Function等系统函数,截获动态代码
正文现在很多网站都上了各种前端反爬手段,无论手段如何,最重要的是要把包含反爬手段的前端javascript代码加密隐藏起来,然后在运行时实时解密动态执行。动态执行js代码无非两种方法,即eval和Function。那么,不管网站加密代码写得多牛,我们只要将这两个方法hook住,即可获取到解密后的可执行js代码。注意,有些网站会检测eval和Function这两个方法是否原生,因此需要一些小花招来忽悠过去。挂钩代码首先是eval的挂钩代码:(function() { if (转载 2020-09-18 10:32:18 · 1014 阅读 · 0 评论 -
监听localStorage变化(同页面监听)
“当同源页面的某个页面修改了localStorage,其余的同源页面只要注册了storage事件,就会触发”同页面监听,重写localStorage的方法,抛出自定义事件:<!doctype html><html lang="en"><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, user-.转载 2020-09-08 10:43:43 · 1055 阅读 · 0 评论 -
localStorage使用总结
WEB应用的快速发展,是的本地存储一些数据也成为一种重要的需求,实现的方案也有很多,最普通的就是cookie了,大家也经常都用,但是cookie的缺点是显而易见的,其他的方案比如:IE6以上的userData,Firefox下面的globalStorage,以及Flash的本地存储,除了Flash之外,其他的几个都有一些兼容性的问题。sessionStorage与localStorageWeb Storage实际上由两部分组成:sessionStorage与localStorage。sessio转载 2020-09-08 10:42:24 · 166 阅读 · 0 评论 -
js检测开发者工具Devtools是否打开防调试
之前写过一篇文章《Javascript检测开发者工具Devtools是否打开》,主要是讲如何通过js来检测开发者工具是否打开,防止别人恶意调试我们的代码,那段代码也是查了蛮多资料整理出来的,当时可以兼容chrome,firefox,ie,但是随着浏览器版本的更新,已经基本上没有作用了,最近我发现还是有蛮多人去浏览那篇文章,所以这里再放出一段代码,算是个升级版吧,之前的版本里在firefox上还有有限制的,下面提供的这个版本我测试过通杀现在的chrome 69,firefox,IE,也不存在之前firefox转载 2020-09-08 10:24:36 · 1404 阅读 · 0 评论 -
某网站高度加密混淆的javascript的分析
前言对某网站加密混淆后的javascript代码也算分析了一段时间了,虽然还没搞出来,但多少有些新得,这里记录一下。工具和资料https://jq.qq.com/?_wv=1027&k=5Bcu3YU QQ群 - Javascript高级爬虫 - 作者自建群,欢迎加入! https://github.com/rockswang/awesome-java-crawler awesome-java-crawler - 我收集的爬虫相关工具和资料 https://github.com...转载 2020-09-07 11:52:39 · 511 阅读 · 0 评论 -
某数加密的流程与原理简析
啃了这么长时间,基本上已经把某数的套路摸了个八九不离十,不愧是中国反爬界的集大成者,感觉收获满满,这里就简单记录一下分析成果。注意:某数在不同的网站上有不同的版本,其流程也略有不同,这里的流程不一定适用于其它网站。工具和资料之前的文章1- 记录了之前尝试的其它方法 之前的文章2- 对加密混淆后的js的一些初步分析 awesome-java-crawler- 我收集的爬虫相关工具和资料 java-curl- 我编写的java HTTP库 另一个用了某数加密的网站的破解SDK前端流程...转载 2020-09-04 13:45:47 · 562 阅读 · 0 评论 -
瑞数(裁判文书)js的加密分析
抓了半年多的裁判文书突然停了,查看log发现HTTP响应码全是202,分析页面发现原网站在cookie上做了加密。经分析正确的请求流程如下1. 请求首页,返回两个set-cookie响应头,cookie名称分别为FSSBBIl1UgzbN7N80S,FSSBBIl1UgzbN7N80T,响应码为202。响应体中有三段不明代码<html><head><metahttp-equiv="Content-Type"content="text/html;c...转载 2020-09-04 13:13:30 · 9963 阅读 · 7 评论 -
JS键盘事件(非常详细)
在JavaScript中,当用户操作键盘时,会触发键盘事件,键盘事件主要包括下面3中类型:keydown: 在键盘上按下某个键时触发。如果按住某个键,会不断触发该事件,但是Opera浏览器不支持这种连续操作。该事件处理函数返回false时,会取消默认的动作(如输入的键盘字符,在IE和Safari浏览器下还会禁止keypress事件响应). keypress: 按下某个键盘键并释放时触发。如果按住某个键,会不断触发该事件。该事件处理函数返回false时,会取消默认的动作(如输入的键盘字符). keyu转载 2020-09-01 11:42:11 · 6009 阅读 · 0 评论 -
JS判断 浏览器 是否禁用Cookie
该属性是一个只读的布尔值。语法:navigator.cookieEnabled如果浏览器启用了cookie,该属性为true.如果禁用了cookie,则值为false。实例1:检测浏览器是否启用了cookie:<script type="text/javascript>document.write("Cookies启用: " + navigator.cookieEnabled);</script>这段代码的效果为:Cookies启用: true转载 2020-08-12 20:33:22 · 1629 阅读 · 0 评论 -
HTML DOM getElementsByName() 方法
定义和用法getElementsByName()方法可返回带有指定名称的对象的集合。语法document.getElementsByName(name)该方法与getElementById()方法相似,但是它查询元素的name属性,而不是id属性。另外,因为一个文档中的name属性可能不唯一(如HTML表单中的单选按钮通常具有相同的name属性),所有getElementsByName()方法返回的是元素的数组,而不是一个元素。实例<html><head转载 2020-08-11 14:38:24 · 377 阅读 · 0 评论 -
js获取显卡型号
(function () { var canvas = document.createElement('canvas'), gl = canvas.getContext('experimental-webgl'), debugInfo = gl.getExtension('WEBGL_debug_renderer_info'); console.log(gl.getParameter(debugInfo.UNMASKED_RENDERER_WEBGL));.转载 2020-07-30 09:29:50 · 1845 阅读 · 0 评论 -
[JS] 修改Navigator对象
在Js中,对于普通的对象,你可以通过下列方法来增加/修改/删除一个实例属性obj = new Object;// 增加属性obj.name = 123;// 修改属性obj.name = 321;//删除属性delete obj.name但是对于浏览器的navigator对象,却无法通过上述方式对属性进行操作针对navigator对象,你可以采用下列的方式来操作它的属性Object.defineProperty(obj, 'key', { //descriptor })转载 2020-07-30 09:27:38 · 2027 阅读 · 0 评论