JS逆向手记01__前端基础

系列文章目录

系列手记占位


文章目录

  • 系列文章目录
  • 前言
  • 一、js自执行函数语法
  • 二、js变量类型的转换(与字符串相加)
  • 三、浏览器环境(BOM)
  • 四、html渲染环境(DOM)
  • 五、html发起请求(表单form)
  • 六、js两种访问对象属性的方法
  • 总结


前言

会带着记录些反爬相关的前端基础。


一、js自执行函数语法

js加载的时候会自动运行

!(function () {...
})()

这函数也可以命名


二、js变量类型的转换(与字符串相加)

别的语言也有类似,下面记录有区别的部分

function test() {};
console.log(test + "");
// 输出:
// "function test() {}"// java、python这种情况会报错

三、浏览器环境(BOM)

浏览器会有很复杂的环境,如:

window: {  // 全局变量location: {  // 标签页信息host: 主机名,href: 网址,...},document: {...}...
}
// 如果在与浏览器不相干的脚本中执行则没有这环境,会被检测出来
window.location.href === undefined

补环境/补头:自定义补充window下的对象,可以手动也可以用脚本


四、html渲染环境(DOM)

document: {  // 全局变量write,...
}

补头易错细节:

console.log(document.write + "");// 浏览器中执行结果:"function write() { [native code] }"

错误示范:

// 先补头
document: {write: function() {};
}console.log(document.write + "");// 脚本执行结果:"function() {}"

正确补头示范:

document: {write: function() {};
}
document.write.toString = function() {return "function write() { [native code] }"};

其实这就是hook的应用:替换原有方法


五、html发起请求(表单form)

不仅仅只有js能发起请求,html也能

<form name="..." action="...php" onsubmit="return ...()" method="post">
密码:<input type="text" name="password">
<input type="submit" value="提交">
</form>

onsubmit: 可以写js代码


六、js两种访问对象属性的方法

window.locationwindow["location"]

总结

js真麻烦

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/679705.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

书生·浦语大模型第四课作业

基础作业&#xff1a; 构建数据集&#xff0c;使用 XTuner 微调 InternLM-Chat-7B 模型, 让模型学习到它是你的智能小助手&#xff0c;效果如下图所示&#xff0c;本作业训练出来的模型的输出需要将不要葱姜蒜大佬替换成自己名字或昵称&#xff01; 1.安装 # 如果你是在 Int…

Java是如何实现的平台无关?

&#x1f3ac;作者简介&#xff1a;大家好&#xff0c;我是小徐&#x1f947;☁️博客首页&#xff1a;CSDN主页小徐的博客&#x1f304;每日一句&#xff1a;好学而不勤非真好学者 &#x1f4dc; 欢迎大家关注&#xff01; ❤️ 1、什么是平台无关性 平台无关性就是一种语言在…

寒假作业

手写盗版微信登入界面 #include "mainwindow.h" #include "ui_mainwindow.h"MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow) {ui->setupUi(this);this->resize(421,575);this->setFixedSize(421,575);th…

C#系列-C#EF框架实现雪花主键(20)

在C#中&#xff0c;使用Entity Framework (EF) 框架并不直接涉及到主键的生成策略。主键的生成通常是在数据库层面或者在应用程序层面处理的。雪花主键&#xff08;Snowflake ID&#xff09;是一种在分布式系统中生成唯一ID的算法&#xff0c;它通常是由Twitter的雪花算法演变而…

接口测试框架分析

框架大体上已经写完了&#xff0c;不过说实话好多代码让我自己写我也写不出来&#xff0c;那该怎么办呢&#xff1f;很简单&#xff0c;把现在已经写好的代码保存起来&#xff0c;等用的时候拿出来复制粘贴就好了&#xff0c;如果你是大神&#xff0c;自己会写&#xff0c;那就…

TikTok:短视频时代的崛起

导言&#xff1a; TikTok&#xff0c;作为一款全球短视频社交应用&#xff0c;正风靡全球&#xff0c;引领着数字娱乐的新潮流。其简洁的用户界面、创意无限的短视频内容&#xff0c;以及强大的社交互动功能&#xff0c;使其成为全球数以亿计的用户喜爱的平台。 TikTok的特点&a…

H5 红色文字抖动网址发布页/引导页源码

H5 红色文字抖动网址发布页/引导页源码 源码介绍&#xff1a;一款红色文字抖动网页源码&#xff0c;可用于引导页或网址发布页。 下载地址&#xff1a; https://www.changyouzuhao.cn/10470.html

第9讲用户信息修改实现

用户信息修改实现 后端修改用户昵称&#xff1a; /*** 更新用户昵称* param wxUserInfo* param token* return*/ RequestMapping("/updateNickName") public R updateNickName(RequestBody WxUserInfo wxUserInfo,RequestHeader String token){if(StringUtil.isNot…

在JavaScript或TypeScript中,@符号的用法

在JavaScript或TypeScript中&#xff0c;符号在导入语句中用作包名的一部分&#xff0c;表示该包是一个命名空间包&#xff08;Namespace package&#xff09;或作用域包&#xff08;Scoped package&#xff09;。这种命名方式主要用于组织和管理由同一组织或个人发布的相关包。…

MySQL篇----第二十二篇

系列文章目录 文章目录 系列文章目录前言一、什么是表级锁二、什么是页级锁三、什么是行级锁四、什么是悲观锁前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女通用,看懂了就去分享给你的码吧。 一、…

selenium 驱动 Edge浏览器,解决selenium打开Edge浏览器闪退问题

一、Edge浏览器驱动下载 1、在设置中查看浏览器的版本号 2、在官网中进行对应下载 Microsoft Edge WebDriver - Microsoft Edge Developer 二、环境变量配置 1、打开设置界面 右击【此电脑】---选择【属性】----选择【高级系统设置】-----点击【环境变量】 2、变量设置 在…

SpringCloud-项目引入Nacos

一、安装Nacos服务 首先&#xff0c;我们需要从 Nacos 的官方网站下载发布版本。下载地址&#xff1a;Releases alibaba/nacos GitHub 选择合适的版本并下载&#xff0c;解压缩得到 Nacos 的安装包。 在解压后的 Nacos 目录中&#xff0c;找到 bin 文件夹。 用写字板编辑…

Git 为 ssh 协议设置代理

前言 我们为终端设置clash代理的时候,一般都是设置的http/https或者socks.但是我们用github的时候一般是用密钥也就是ssh链接. 教程 在~/.ssh/config文件中加入以下的代码. Host github.comHostname ssh.github.comPort 443User gitProxyCommand nc -v -x 172.28.208.1:789…

【玩转408数据结构】线性表——线性表的顺序表示(顺序表)

知识回顾 通过前文&#xff0c;我们了解到线性表是具有相同数据类型的有限个数据元素序列&#xff1b;并且&#xff0c;线性表只是一种逻辑结构&#xff0c;其不同存储形式所展现出的也略有不同&#xff0c;那么今天我们来了解一下线性表的顺序存储——顺序表。 顺序表的定义 …

【ES6】模块化

nodejs遵循了CommonJs的模块化规范 导入 require() 导出 module.exports 模块化的好处&#xff1a; 模块化可以避免命名冲突的问题大家都遵循同样的模块化写代码&#xff0c;降低了沟通的成本&#xff0c;极大方便了各个模块之间的相互调用需要啥模块&#xff0c;调用就行 …

在centos中安装chrome,为selenium做准备

一、安装chrome浏览器 1.系统需求 CentOS 7 系统必须是 64 位系统&#xff0c;Chrome 没有 32 位系统的软件包。 2.在 CentOS 7 系统中添加谷歌官方 Yum 软件源 在 CentOS 7 系统下的 /etc/yum.repos.d/ 文件夹中创建 google-chrome.repo 文件&#xff1a; sudo vi /et…

力扣_字符串6—最小覆盖字串

题目 给你一个字符串 s 、一个字符串 t 。返回 s 中涵盖 t 所有字符的最小子串。如果 s 中不存在涵盖 t 所有字符的子串&#xff0c;则返回空字符串 “” 。 示例 &#xff1a; 输入&#xff1a;s “ADOBECODEBANC”, t “ABC” 输出&#xff1a;“BANC” 解释&#xff1a;…

安装faiss环境教程

文章目录 打开环境安装faiss环境检查已安装的环境切换环境至faiss 打开环境 source activate # 打开环境安装faiss环境 conda create -n faiss_env # 安装faiss环境检查已安装的环境 conda info --envs # 检查已安装的环境切换环境至faiss conda a…

MySQL数据库⑧_索引(概念+理解+操作)

目录 1. 索引的概念和价值 1.1 索引的概念 1.2 索引的价值 2. 磁盘的概念 2.1 磁盘的结构 2.2 操作系统与磁盘交互的基本单位 2.3 MySQL与磁盘交互的基本单位 3. 索引的理解 3.1 主键索引现象和推导 3.2 索引采用的数据结构&#xff1a;B树 3.3 聚簇索引和非聚簇索引…

关于物理机ping不通虚拟机问题

方法一 设置虚拟机处于桥接状态即可&#xff1a;&#xff08;虚拟机->设置->网络适配器&#xff09;&#xff0c;选择完确定&#xff0c;重启虚拟机即可。 方法二 如果以上配置还是无法ping通&#xff1a;&#xff08;编辑->虚拟网络编辑器&#xff09; 首先查看主机网…