js获取a标签的value值_js逆向 | 某住房网跳转链接生成逻辑分析
追不上的不追、不属于自己的不要、挽留不住的不留、生活哪有那么复杂。
1、前言
一、目标网站
aHR0cDovLzYwLjE3My4yNTQuMTI2Lw==
二、明确分析目标
打开网页,随意点击一个小区。
网页重开一个详情页面,如下图所示。反复点击同一个小区,会发现详情页url每次都是变化的,变化的位置已用红框标记。
所以,文章分析的重点就是这一串数字的生成逻辑。
2、生成逻辑分析
一、查找点击事件
打开开发者模式,刷新页面,找到页面请求的接口,在响应中搜索小区名称,定位到如下图位置。
每个a标签下都有onclick,id属性,点击触发的事件名称为reurl,并且传入了this,但这里暂时还看不出this表示什么。
全局搜索reurl,如下图,40行打上断点。
点击小区名称,js正常断下。选中recode(),可以看到生成的结果就是需要的那一串数字。
继续选中参数,可以看到传入的参数即为a标签下id属性值。
二、分析recode()
点击进入recode函数,如下图。
整个逻辑很简单,就是调用了nscaler()和SetObjNum()两个函数,分别生成对应的值。
我们要做的,无非就是抠出对应的js代码,然后执行。
这里需要留意b的值,初次生成是提取了页面id=“iptstamp”标签中value的属性值,我的理解就是获取页面的加载时间。
从接口响应中直接搜索iptstamp可以查到。
放在代码中,可以从页面copy出来作为固定值,也可以从页面动态获取,但是不能自己凭空构造一个13位的时间戳。
三、抠出js代码
之前的文章中js比较简单都是转化成python实现,这里直接抠出对应的函数。
nscaler()部分,注意去除$.。
function nscaler(a) { var b = ""; each(a, function (i, e) { switch (e) { case "0": b += "0"; break; case "1": b += "2"; break; case "2": b += "5"; break; case "3": b += "8"; break; case "4": b += "6"; break; case "5": b += "1"; break; case "6": b += "3"; break; case "7": b += "4"; break; case "8": b += "9"; break; case "9": b += "7"; break } }); return b }
而nscaler()内部又调用了each()
接着抠出each(),里面有很多判断可以忽略,我这里直接全部copy下来了,懒得去调试分析。
function each ( obj, callback, args ) { var name, i = 0, length = obj.length, isObj = false; if ( args ) { if ( isObj ) { for ( name in obj ) { if ( callback.apply( obj[ name ], args ) === false ) { break; } } } else { for ( ; i < length; ) { if ( callback.apply( obj[ i++ ], args ) === false ) { break; } } } // A special, fast, case for the most common use of each } else { if ( isObj ) { for ( name in obj ) { if ( callback.call( obj[ name ], name, obj[ name ] ) === false ) { break; } } } else { for ( ; i < length; ) { if ( callback.call( obj[ i ], i, obj[ i++ ] ) === false ) { break; } } } } return obj;}
接着就是SetObjNum()
function SetObjNum(n) { var a = ""; for (var i = 0; i < n; i++) a += Math.floor(Math.random() * 10); return a }
接着就是入口函数了,首次生成b的值,作为参数value传递进来。
function recode(a,value) { var n = nscaler(a); var c = SetObjNum(a.length); var d = SetObjNum(a.length); n = parseInt(n) + parseInt(d); var b = value; var b = nscaler(b.toString()); return c + "-" + n + "-" + d + "-" + b }
3、代码展示
测试代码如下!
代码中没有动态获取页面的加载时间,直接从页面上复制了一个。
小区id也是随机取了一个,作为测试。
返回结果如下
ok,生成的数字串可以正常获取详情页面信息。简单的一个网站,主要是抠出对应的js代码,注意缺啥补啥就行。
对你有帮助,请扫码关注!感谢!
公众号:逆向旅行
微信号:fzcoder888888
定期分享Python进阶技术,爬虫
str4表示client_ver
js获取a标签的value值_js逆向 | 某住房网跳转链接生成逻辑分析相关推荐
- js获取select标签选中的值
var obj = document.getElementByIdx_x("testSelect"); //定位id var index = obj.selectedIndex; ...
- js 获取图片url的Blob值并预览
js 获取图片url的Blob值并预览 1)使用 XMLHttpRequest 对象获取图片url的Blob值 参考:https://www.cnblogs.com/tujia/p/6483255.h ...
- 编辑器js获取浏览器高度和宽度值(转)
js获取浏览器高度和宽度值 网页可见区域宽: document.body.clientWidth 网页可见区域高: document.body.clientHeight 网页可见区域宽: docume ...
- php 获取js对象的属性值,js获取对象,数组所有属性键值(key)和对应值(value)的方法示例...
本文实例讲述了js获取对象,数组所有属性键值(key)和对应值(value)的方法.分享给大家供大家参考,具体如下: var values=function(object) { var values ...
- 原生js获取指定标签的父元素
js是没有这个函数的,js只有.parentNode获取上一级的父元素.如果想用js获取指定标签的祖先元素,不想使用jq.下面是封装的函数,初学者自己写的,实测有效. //js获取指定标签的父元素,获 ...
- 面试题-js获取cookie中存储的值?
js获取cookie中存储的值? 1.cookie是浏览器提供的一种机制,它将document 对象的cookie属性提供给JavaScript.可以由JavaScript对其进行控制,而并不是Jav ...
- js获取li标签中子标签属性
js获取li标签中子标签属性 1.获取并修改li标签下子标签的classname var ul=document.getElementById("ul的id").getElemen ...
- js获取php页面session的值,在html页面中取得session中的值的方法
1.首先呢session的key-value都是存在server的,浏览器HTML页面是没有办法直接取得session中的值,只有在html里能通过js拿到jesessionid之类的东西. 1.1. ...
- js获取单选框里面的值
rt,如果想获取单选框里面的值,该如何获取呢. <script> window.onload = function(){ //通过名字获取 getElementsByName //var ...
最新文章
- 计算机CAD作文,【2人回答】职校课堂里我最喜欢上CAD课600字作文-3D溜溜网
- java内存分配和回收策略
- 机器学习常用算法(LDA,CNN,LR)原理简述
- 关于C#调用Excel的资源占用问题
- python的模块和类_Python模块和类.md
- BigInteger用法-Java大数据存储、运算
- android 解决Error:This Gradle plugin requires a newer IDE able to request IDE model level 3. For Andro
- leetcode面试题 02.08. 环路检测
- 逆向课程第二讲,寻找main入口点
- SSM框架:MyBatis
- 关于win10 pagefile.sys文件的解读及占用C盘空间太大的处理
- python 视频清晰度_python识别视频黑屏或者低清晰度
- MainMenu.xib
- 11.4王者荣耀服务器维护中,4月11日全服不停机更新公告
- 牛客网在线编程——二维数组中的查找
- 《The Wiley Handbook of Human Computer Interaction》翻译(冰山一角)
- Mozilla Firefox 全版本下载
- 简单保护动物网页制作stu-works.com学生保护动物网页设计作品HTML 濒危动物静态网页成品下载
- 如何在靠tiktok在三个月内快速赚到20w的?实现人生逆转
- 被囊群优化算法(TSA)详解,附源码,直接可以
热门文章
- 【Python】下载所有 XKCD 漫画
- [极客大挑战 2019]BuyFlag
- 人生价值观的培养和建立
- 六逻辑层次 职业规划案例_我如何在六个月内改变职业并找到了一名开发人员...
- 数组复制速度 System.arraycopy()clone() Arrays.copyof() for()探究
- java switch case多个条件_JAVA基础程序设计之判断与循环
- zlib.h: 没有那个文件或目录
- Django中的路由分发
- 大数据技术周报第 003 期
- Python多任务——进程