js逆向基础15webAPI

错误回收 try catch finally
错误回收机制是在编码运行过程中,在写js过程中肯定会遇到错误,但是呢这个错误有时并不是可控的,比如说当向服务端发送一个请求的时候,返回的内容如果要是服务端报错了,这些类似的情况,那么这些错误不可控。所以要用垃圾回收机制,写代码的并不知道会不会报错。

错误回收 try catch finally
在介绍错误回收之前,先介绍一下 Error 类
console.dir(Error)
new Error()
EvalError
InternalError
RangeError
ReferenceError
SyntaxError
TypeError
URIError
这些错误全部继承至Error
获取错误的字符串信息: (new EvalError('1111111')).stack / (new EvalError('1111111')).message
console.dir(new EvalError('1111111'))

4b2d723c71a94695bdc0a09344a4a059.png

8c258dc6bdd44920b5a761a88faf4793.png

257fc6302601449f8bcc5ede7f162289.png

73da9080076949d48edee01d98f89af5.png

了解了这些之后,我们就可以讲 try catch了
try catch 实际上就是 运行 try 里面的代码,如果报错了,则会将错误的字符串形式接收至catch中
举例
try{throw 1}catch (e){console.log(e)}
eafbfd7bfbcf4806bc26e6e6c60daa80.png
try{throw new TypeError('Cannot read properties of undefined (reading \'1\')')}catch (e){console.log(e)}
try{[][1][1]}catch (e){console.log(e)}
try{[][1][1]}catch (e){console.log(e)}finally{console.log('over')}

9a5a5ebb8c9148d5816398583a0e691a.png

c8924c10240843bc88439413e23ed6ef.png

new.target 属性允许你检测函数或构造方法是否是通过new运算符被调用的

f6217f3484934b98a86ca1d39d9f0ed5.png

举例
Foo = function (){if(new.target){console.log('ohhhhh')}}
Foo();
new Foo();

42601b06dc394eaaa00d11d8045e7d33.png

Foo = function (){if(new.target){console.log(new)}}
Foo = function (){if(new.target){console.log(new.target)}}

new.target指向被new调用的构造函数,所以"new."成为了一个虚拟上下文。
Foo = function (){if(new.target){console.dir(new.target)}}

WebAPI
WebAPI实际上是我们整个逆向的角度来讲非常常用,杂,多,乱
WebAPI中每一个都各司其职,都有它的作用,也就是说这些东西的绝大部分在外部其他js非浏览器就是没有dom和bom节点的这些引擎里面是完全没有不存在的,如果说一段加密的js,要检测或者说利用它的特性的话,那么遇到一个就必须要处理一个,所以随着时间的推移,遇到的网站的增多,难度的增大,就会接触到一部分(作为反爬工作,这些是必不可少的)
1. 

Location 

它的大写标志并不实际上的大写

Location 接口表示其链接到的对象的位置(URL)。所做的修改反映在与之相关的对象上。 Document 和 Window 接口都有这样一个链接的 Location,分别通过 Document.locationWindow.location 访问。

属性

Location 接口不继承任何属性,但是实现了那些来自 URLUtils 的属性。

Location.href

包含整个 URL 的一个DOMString

Location.protocol

包含 URL 对应协议的一个DOMString,最后有一个":"。

Location.host

包含了域名的一个DOMString,可能在该串最后带有一个":"并跟上 URL 的端口号。

Location.hostname

包含 URL 域名的一个DOMString

Location.port

包含端口号的一个DOMString

Location.pathname

包含 URL 中路径部分的一个DOMString,开头有一个 /

Location.search

包含 URL 参数的一个DOMString,开头有一个“?”

Location.hash

包含块标识符的DOMString,开头有一个 #

Location.username

包含 URL 中域名前的用户名的一个DOMString

Location.password

包含 URL 域名前的密码的一个 DOMString

Location.origin 只读

包含页面来源的域名的标准形式DOMString

方法

Location 没有继承任何方法,但实现了来自URLUtils的方法。

Location.assign()

加载给定 URL 的内容资源到这个 Location 对象所关联的对象上。

Location.reload()

重新加载来自当前 URL 的资源。他有一个特殊的可选参数,类型为 Boolean,该参数为 true 时会导致该方法引发的刷新一定会从服务器上加载数据。如果是 false或没有制定这个参数,浏览器可能从缓存当中加载页面。

Location.replace()

用给定的 URL 替换掉当前的资源。与 assign() 方法不同的是用 replace()替换的新页面不会被保存在会话的历史 History中,这意味着用户将不能用后退按钮转到该页面。

Location.toString()

返回一个DOMString,包含整个 URL。它和读取URLUtils.href的效果相同。但是用它是不能够修改 Location 的值的。

83bb8c758a654e978249ee83ca4cc7a6.png

 

ec6721b0c48748d29cfa4d2d4ffa7227.png

其中这些内容都会与我们当前所在的页面产生直接的关联也就是说我们修改其中的某个属性或方法整个浏览器和页面也会跟着进行相应的变化。ee4f4d8c5e0f49d8a38264de65341c92.png

cc6bf81714494c05abd8a8105ea6e85a.png

执行完以后页面和浏览器也跳到了相应的地址

c4770b7b73d84dc1b5f518f3408c27ae.png

844af6c1fa0d483ba8ee030ba35ebd6c.png

e66666b482ab4e19bce2571dac2fc70a.png

Location 接口表示其链接到的对象的位置(URL)。所做的修改反映在与之相关的对象上。
Document 和 Window 接口都有这样一个链接的 Location,分别通过 Document.location和Window.location 访问。

document.location , window.location
location 是 built-in 函数 Location 的实例化对象

location.href 会影响当前页面url
location.href = 'http://www.xxxx.com';

当设置了 location.href 后,页面会随之改变
WebAPILocation用法

Navigator

Navigator 接口代表了用户代理的状态和身份,它允许脚本对其进行查询并注册自身以便执行某些活动。

可以通过 window.navigator 只读属性获取 Navigator 对象。

108b0b42bc754e628b74d479d9e1c6b4.png

c8605ec9776e4b0988a09d4be016618f.png

156a7ac35cfa437ca64dec66359bc547.png

Navigator 接口表示用户代理的状态和标识。它允许脚本查询它和注册自己进行一些活动。
可以使用只读的 window.navigator 属性检索 navigator 对象。
navigator 是 built-in 函数 Navigator 的实例化对象
方法都在:navigator.__proto__ / Navigator.prototype 里面,但是这样访问是非法的 Illegal invocation
字符串属性
特殊的字符串属性

navigator.getBattery

navigator.getBattery().then((a)=>{console.log(a);window.battery = a;});
navigator.connection;
navigator.geolocation;
navigator.hardwareConcurrency;
navigator.keyboard.getLayoutMap().then((a)=>{console.log(a)})
navigator.plugins
navigator.mimeTypes

ba0626a21c84441ca9350643528c8979.png

2e15efcd8fdc4ab9a2d331d857c7d6fb.png

1966a2a2b1aa4efab1bb2521f4ffb582.png

296d0115114a4faa89e8218fcc6058f1.png


AudioContext//跟音频相关的
AudioContext

31f67ff5245d4dee8ae2545e74b24d95.png

 

document  




document
接口表示任何在浏览器中载入的网页,并作为网页内容的入口,也就是 DOM 树 (en-US)。

在 js中,dom节点也是通过对象实现的。可以通过 console.dir 查看dom节点对象细节

a6f19e269ddd45fe8cd05b2f5203943f.png
document中的元素选择器方法
document.getElementById//查找ID
document.getElementsByClassName
document.getElementsByTagName//找标签
 

a11cfbaf0cd1408ab70765b8200d309f.png

 

e6c2937eb89e4298b0a9a316b608f14a.png

 

document.getElementsByClassName('hero-copy')[0]
console.dir(document.getElementsByClassName('hero-copy')[0])
document.getElementsByClassName('hero-copy')[0].innerHTML = ''

20101d1ddb50412bae63825062cab722.png

创建dom节点

f1fd755c073c42b58f40abe574626891.png

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值