自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(43)
  • 收藏
  • 关注

原创 多线程笔记

join里面有计数器,会在put的时候加1,task_done的时候减一,当局计数器是0的时候,会马上阻塞。2.主线程不需要等待子线程结束,只要主线程结束,子线程就强制结束.守护线程,守护线程要在开始之前。用到join()方法,会将其阻塞在,在主线程结束后,对其释放。用安全的队列 from queue import Queue。1.子线程没有运行结束时,主线程不要运行。多线程,适用于 io 密集型。3.2多线程的安全性,不安全。3.1通过全局变量通信。死锁,资源竞争的情况。

2024-07-18 21:24:58 65

原创 17.上线文管理器,等面向操作

对属性的设置进行限制,设置属性就会触发.将属性名name和值value作为参数传递给该方法,可以在这个方法中实现对应的赋值操作,进行值的修改或验证.这个方法,方法定义了,使用索引访问对象时的行为,使用obj[key]进行索引操作时,会调用该方法,并将索引key作为参数传递给这个方法,(self, name)删除属性时,会调用该方法,并将name作为参数传递给该方法.,可以实现删除属性的逻辑。实现了__iter__()方法的都可以视为可迭代对象,列表,字典,元组,集合,字符串,

2024-07-04 22:40:26 952

原创 16.面向对象后续

静态方法通常用于执行与类相关的任务,但不依赖于类的实例状态或属性的操作,可以用于辅助函数,工具函数或者用于撞见对象的辅助方法等。属于类,而不是属于实例的方法,在调用实例方法时,不需要传入(self)作此参数,不依赖类的实例,不能访问实例属性和实例方法。所有的东西都是type的实例,所有的东西都是object的子类。属于类不是实例,第一个参数是cls表示类本身,而不是实例.通过cls参数,类方法可以访问和修改类级别的属性方法.可以访问类级别的属性和方法,类方法第一个参数是本身.

2024-07-01 16:52:20 321

原创 15.封装,继承,多态

抽象基类,允许定义抽象类和抽象方法,从而可以规范子类的行为,抽象基类并不能被实例化,只能用于继承,子类必须实现抽象基类中定义的所有方法。多态性支持,抽象基类实现了多态性,可以在使用抽象基类的地方接收不同的子类对象,实现更灵活的代码设计。2.代码组织和扩展,继承可以使代码的层次结构更加清晰,子类直接从父类继承,再写特定的.约束方法命名:强制子类必须事先指定的方法,避免方法名拼写错误,或者忘记实现方法的问题.同一个方法名可以在不同的类中实现,并且根据对象的类型调用不同类的方法。

2024-06-27 19:28:32 384

原创 14.面向对象编程

定义子在类中的方法,可以访问和操作对象的实例属性,并且在调用时会自动传入对象自身,通常用self作为第一个参数,实例方法是与类的实例关联的,并且可以访问和修改对象的状态.类的对象是类的具体实例,也叫实例对象类定义对象的属性和方法,对象是类的实体,具有自己的属性值和对类中的访问权限.用于描述对象的属性(数据)和方法(行为),对象是类的具体实例,表示一个具体的实体.与类相关联的函数,用来定义对象的行为,方法在类中定义,通过对象调用.第一个形参是self的方法叫做实例方法,类属性可以通过实例对象来访问。

2024-06-27 19:28:12 689

原创 13.模块

用于确定当前模块是否作为主程序执行,或者只是被导入到其他模块使用.import xx as xx 起一个别名,功能是一样的。= [ ] 避免冲突与全部导入相结合使用,做限制。模块是一个包含函数,变量,类等代码定义的py文件.from xxx import * 全部导入。文件作为主程序直接执行时,导入模块 import。1.python模块。做导入的时候会执行.

2024-06-27 19:27:35 119

原创 12.日志

运行分析: 允许我们跟踪应用程序的执行流程和事件,以便进行性能分析,行为分析和用户行为分析.DEBUG INFO WARNING ERROE(错误) CRITICAL(严重错误)方便问题排查:日志记录提供了有关问题的关键信息,可以快速定位和修复错误.系统监控: 通过记录查看应用程序的运行状态,资源使用和性能指标,日志记录将应用程序运行时的关键信息写入日志文件或者输出到控制台。正常情况下会进行追加写,可以设置mode = ’ ’3.logging的使用。

2024-06-27 19:27:15 139 1

原创 11.python异常

是try-except的可选部分,没有出现异常则会执行.:所有内置异常类的基类, 即其他所有的异常都是基于它的。:类型错误, 操作或函数应用于不兼容的数据类型.无论是否发生异常,都会执行.可以进行资源回收.try-finally不会被return中断。:名称错误, 尝试访问不存在的变量或函数.:值错误, 当函数接收到不合法的值时引发.:语法错误, 通常是代码书写不正确.:零除错误, 尝试将一个数除以零.保持finally代码的正确性。2.python的异常捕获。也可以分开写多个异常.

2024-06-27 19:26:54 193

原创 10.文件读写

三者都可以传递参数,传多少,指定读取的字符数或字节数.readlines传参小于当前输出整行,大于下一行也会输出.write(),使用方法将文本内容写入文件,调用write将内容写入到缓冲区.在日常生活中,工作中,文件的操作主要包括,创建文件,打开,关闭,读,写.with语句可以自动管理文件的打开和关闭,无需调用close()方法。二进制文件由字节组成,包含非文件数据,如图像,音频和视频.close(),使用这个可以不使用flush()flush(),将缓冲区的内容写入到磁盘。字典与json的想换转化。

2024-06-27 19:26:38 240

原创 9.闭包,装饰器,生成器.

2.yield关键字用于生成器函数中,用于定义一个生成器函数,并将值产生给调用者,生成器函数是一种特殊的函数,可以通过yield关键字将多个值逐步产生,而不是一次性返回所有结果,当生成器函数执行到yield语句时,函数会暂停执行并将值返回给调用者,函数的状态会被保存,方便下次到暂停的地方继续执行,生成器函数可以多次使用yield来生成多个值,并且可以在需要时进行迭代处理.使用yield语句将值生成出来,后暂停,请求下一个值的时候,从上次暂停的地方进行操作生成下一个值,再次暂停.

2024-06-27 19:26:25 316

原创 8.作用域与函数

对于可变对象(列表,字典),传递方式是引用传递,因为他们的值可以在函数内部进行修改,对于不可变对象(数字,字符串),传递方式是值传递,函数内部对形式参数的修改不会影响到实际参数.缺省参数:也叫做默认参数, 用于在定义函数的时候为参数提供默认值, 调用函数时可以不传递该参数的值, 所有的位置参数必须出现在默认参数前, 包括函数定义和调用.**kwargs,关键字传递,在参数是key=value的情况下, 所有的key-value都会被kwargs接收, 同时会将key-value组成一个字典.

2024-06-27 19:26:11 363

原创 7.函数相关

递归调用:递归函数在其定义中必须包含对自身的调用.通过递归调用,函数可以反复执行相同的操作,并且在每次调用中传递不同的参数.递归的用法: 树的遍历,阶乘呢个计算,斐波那契数列,递归的思想能够简化问题的表达和解决.终止条件:递归函数必须包含一个或多个基本情况,即不再进行递归调用的条件,避免无限递归。在函数进行计算的时候,可以接受外部提供的数据,参数可以是多个,也可以不给参数。在函数完成要做的事情之后,向调用返回数据.(a,b)形参,(1,2)是实参。参数如果不需要,可以省略不写。定义一个计算两数之和的函数。

2024-06-27 19:25:48 205

原创 6.数据容器

set1.difference_update(set2)消除jihe1里面集合2没有的元素,消除两个集合的差集,在原集合上面操作。set1.difference(set2),取出集合1有集合2没有的元素,生成一个新集合,集合1与集合2不变.set1.isdisjoint(set2)判断集合1和集合2是否包含相同的元素,包含返回False。set1.issubset(集合2):判断集合1是否是集合二的子集,是的化返回True。统计列表内元素的和(列表内元素是数字类型的): sum(list)

2024-06-27 19:25:20 784

原创 5.for循环

start默认从0开始,stop,计数到stop结束.step步长默认1。跳过当前循环剩余的语句,继续进行下一轮循环。for循环定义的变量尽量不要用到循环外.一般用range(0,100)这种。for循环适用于已知数量的循环。1.range()函数。5.for循环的嵌套。

2024-06-27 19:25:08 119

原创 4.if 条件判断

1.if-else语句3.if语句可以嵌套4.逻辑运算符and 两个都为真,才是真or 一个为真 即是真not 取反and从左到右,所有值为真,返回最后一个真的, 有假的,返回第一个假的.or从左到右,返回第一个为真的值,若全为假返回最后一个为假的优先级 not>and>or5.成员运算符in 在指定序列找到对应值返回True 否则 Falsenot in 在指定序列没有找到对应值返回 True 否则False6.条件表达式。

2024-06-27 19:24:55 235

原创 3.imput 字符串常用方法 字符串倒序,切片

split(str, num)前者为切分, num为指定值 相当于切的次数。index(子字符串)可以返回子字符串出现的位置, rindex从右边找。isalnum() 至少有一个字符,且所有字符都是字母或数字。find(str,beg,end) 索引 -1。replace(str1,str2)用str2替换str1。strip()去除字符串首尾空白符,也可以向里面添加元素。find(子字符串)可以返回子字符串出现的位置,

2024-06-27 19:24:30 153

原创 2.字符串

使用%来占位,%s ,s意思是变为字符串放入的占位。精度控制%m.nd n控制小数,m控制整体长度。以r修饰的字符串会原样输出r’afggg’编码encode 解码decode。\t制表符 (a\tb\tc\t)创建方式 : 单,双引号,三引号。要保持原本的样子可用%d,%f。\ 转义符 行尾是续行符。4.字符串拼接和格式化。

2024-06-27 19:24:11 100

原创 1.变量数据类型

一般包括序言性注释(功能接口,数据的描述,模块功能),功能性注释(程序段的功能,语句功能,数据的状态),加减乘除(+ - * /) +可用于字符串的拼接。2.注释 # , “”“”“” , todo注释。元组(tuple) 有序不可变的元素序列。1.常见的字面量类型,整数,浮点数,字符串。变量的值是可以改变的,可重复使用的.集合(set) 无序不重复集合。float() 转换成浮点数。str() 转换成字符串。浮点型(float) 小数。int() 转换成整数。

2024-06-27 19:23:46 147

原创 webpack 扣代码方法暴露 笔记.

对于代码node --inspect-brk去调试node.js 如果代码不满足需要进行修改使其满足条件.webpack:以加载器为核心,以加载器调用某一个模块为入口.分模块打包,最终返回export进行调用。模块:webpack的自执行函数里面传入的参数.这个参数可以是数组,可以是对象.webpack只是打包工具,环境检测,浏览器指纹,各种信息采集需要另外处理.从代码执行到函数入口开始--------代码拿到密文结束.向上找堆栈,定位, 找前文调用,确定位置,从参数位置找入口。

2024-06-03 17:43:23 313

原创 js扣代码

不管的情况,需要写日志笔记,方便检索到位置.建议唯一性.快速检索定位.如果对象涉及到参数,如果删掉会发生移位,这种情况下,应该进行滞空操作.调试的时候保持一致.参数一致.注意断点位置,否则会有作用域问题。出现上述不管情况时,后续参数删除问题看个人,不报错则正常进行.对象不能直接参与计算,一定是对象里的属性方法.函数涉及到必要参数的传递,需要进行查看.关于对象两种方案.滞空,完全不去管.函数复杂,this掺杂度高.new之后this的问题.参与计算的可能性不大.遇到之前扣过的函数.传参要处理的事情多.

2024-06-01 22:41:09 275

原创 混淆目的与jsvmp简述

2.数组 [1937774191, 1226093241, 388252375, 3666478592, 2842636476, 372324522, 3817729613, 2969243214]是SM3.function(){*******})(“xxxxxxxxxxxxxx”) 可能是jsvmp a = n() b = n() c= n() 是webpack。常见的jsvmp实现方法:自己写了一段代码解释器,用来解释自己的代码,这个自己的代码,可以是密文,也可以是所谓的明文.

2024-04-27 17:35:50 468

原创 定位与hook

第二种情况: 重放攻击有效,删参数重放攻击出现问题,寻找最优解, 关键参数处理(找接口,固定值,set-cookie/js逆向),流程完善,代码总结, 稳定测试.第四种情况: 重放攻击短期有效,参数过期.关键参数处理,删参数重放攻击,流程完善与代码总结.稳定性测试,短期内崩溃,重新查看是否为参数问题,加上参数在进行稳定性测试。第三种情况: 重放攻击无效, 关键参数猜测与处理(找接口/固定值/set-cookie), 进行测试请求 删参数寻找最优解, 同上.简单函数hook(不涉及this指向)

2024-04-27 15:55:41 277

原创 debugger,python与js代码交互

Never pause here,在定时器启动前重写setInterval,autoresponse。在不动函数的前提下,进行一些操作.用一个变量去接收函数,重写原函数,返回原先的执行方法.2.eval(‘debugger’)原理与上相似,在虚拟机里执行debugger方法。前者是改变原函数的逻辑,让功能发生变化,后者是在不改变函数功能的前提加入一些东西.2.html页面产生,自动生成几千个script标签,里面是debugger;相当于是执行字符串里面的js代码,可操作空间大。

2024-04-26 22:31:26 203

原创 fiddler与cookie

报SLL的错误时,需要添加verify=False,如果还是不行的话,需要加代理之后就不会检测SSL了.textview:响应体的整个html页面, syntaxview:列表形式展示.composer,replay重放攻击:利用完全相同的参数去请求一个请求过的链接。headers:请求头 raw:所有请求内容的汇总 WebForms传值.cookie两种: cookie本身包含信息,但是解密方案服务端有.返回的只是一个key,value在服务端的数据库存着.cookie:请求和响应cookie.

2024-04-26 14:36:45 324

原创 基本请求库

通过 XMLHttpRequest 可以在不刷新页面的情况下请求特定 URL,获取数据。这允许网页在不影响用户操作的情况下,更新页面的局部内容。open()是准备工作,尚未发送.send是发送,response是响应。请求头加密可能会在,open和send之间进行操作.fetch:兼容性差 请求是异步的 跟axios像.this.interceptors是一个点.是一个完全异步的库. 并不支持同步方案.整个过程是一个发送请求的过程.在浏览器上面使用需要导入.请求在发送时是有延迟的.worker实现多线程.

2024-04-23 20:53:11 166

原创 express 与vs2的简单案例

app.get app.psot 一个接收get请求,一个接收post请求。1.对污染的全局变量进行一键缓存清理,window除了内置的全部清除。每一次执行js都有一个独立的环境.环境纯净,性能快.接口库:express VS2 jsdom。req,请求的内容. res: result。并发混论,不期待现象,无法预测结果.,相当于建立一个后端的web服务.不可迭代状态不能用这种方法清理.

2024-04-23 15:36:58 224 1

原创 初识加密库

Browserify 使用类似于 node 的 require() 的方式来组织浏览器端的 Javascript 代码.cryoto库 CryptoJS = reqyire(“cryoto-js”)WordArray对象,是CryptoJs 中最核心的一个类.加解密AES,有不同的加密方式 iv key data。想用node.js实现哈希算法,AES,DES,加密。设置密钥(key)和偏移量(iv)CryptoJS支持的加密模式。CryptoJS支持的填充方式。打包: browserify库。

2024-04-23 10:31:02 171

原创 WebAPI

Document 和 Window 接口都有这样一个链接的 Location,分别通过 Document.location和Window.location 访问。navigator.geolocation.getCurrentPosition()里面需要一个回调函数.new.target 属性允许你检测函数或构造方法是否是通过new运算符被调用的.new.target指向被new调用的构造函数,new.成为了一个函数上下文.获取位置,获取定位.location.href 会影响当前页面的url。

2024-04-21 18:01:16 464

原创 Node.js

setImmediate是node.js里面特有的事件执行机制,setImmediate.toString()查看。有函数则进入函数体内部;node --inspect-brk ***.js可以用node环境在浏览器上进行调试.js生成参数,提高定制化能力,需要用到nodejs.更快执行js代码的环境.export在node.js里面是对象,浏览器里面是undefined.REPL,是Node.js的交互运行环境.有点像浏览器的控制台.在Node.js上尽量不要执行未知代码.Node.js和浏览器差距.

2024-04-21 17:54:07 501 1

原创 this详解

这个新对象进行[[prototype]]连接, 将新对象的原型指向构造函数,这样新对象就可以访问到构造函数原型中的属性。改变构造函数this 的指向为新建的对象,这样新对象就可以访问到构造函数中的属性。通过call()、apply()或者bind()方法直接指定this的绑定对象。4.eval语句的作用域是独立的, eval(‘var a = 100’)隐式丢失其实就是被隐式绑定的函数在特定的情况下会丢失绑定对象。使用.call()或者.apply()的函数是会直接执行的。

2024-04-14 21:55:48 388

原创 闭包原型链

当函数返回函数时,闭包的概念就变得更加重要了,返回的函数可以访问不属于全局作用域的变量,蛋它们仅存在于闭包中.当一个函数,被创建并传递或从另一个函数返回时,会携带一个背包,背包中是函数声明时作用域内的所有变量.闭包不可以理解为在函数里返回函数的函数,这是引发闭包问题的原因,而不是,闭包概念的本身.prototype,显式原型 通常是自己写的,自己设置,针对构造函数。__proto__隐式原型,自己生成,一般不改,主要针对实例化对象。函数的二义性,可调用,可构造函数。不是所有的内置函数都是构造函数.

2024-04-14 21:52:42 280

原创 session保持检测,无限debugger

cookie的来源一共可以分成两大类,一类是浏览器驱动js设置的cookie,即 document.cookie = ‘要设置的cookie’.html页面生产时,直接自动生成script标签,标签里只写一个debugger,用 AutoResponse把干扰点去除.三元素: debugger关键字,eval(‘debugger’),Function(‘debugger’)()第二种来源是 set-cookie,指访问一个页面的时候,响应会自动加上服务器给的set-cookie.无限debugger。

2024-03-27 21:02:52 231

原创 js无混淆加密Base64,md5加密

Base64,md5加密 需要用到相关的库 base64 和 hashlib。请求第二页时,将Headers参数进行对比,观察不一样的很可能就是加密参数.对网站进行进行重放操作,发现可以获取到数据,说明加密参数不是动态.在网页工具中,找到参数,观察其加密方式。在请求头中加入参数即可正常获取数据.上面为将其转化成MD5加密参数。Base64的编码和解码。全局搜索,search。

2024-03-22 20:18:54 210

原创 请求检测post,headers

在进行页面跳转时url不变化,抓包工具抓取多了一项,程序运行报错,对多抓取的进行分析.用type对数据进行类别分析. valueerror:错误为出现最多的.SyntaxView:以脚本的形式展示响应结果.textView:以文本的形式展示响应结果.Caching:响应的缓存过期时间或者缓存.Cookies:响应的cookies信息.HexView:16进制表现响应结果.WebView:列表形式展示响应结果.json: json展示响应结果.XML: xml形式展示响应结果.Raw:文本形式展示响应头.

2024-03-21 21:22:07 160

原创 数据类型的转换和逻辑判断

(2)双方为基本数据类型,一方为null、undefined、另一方也需要是这样才能比较,一方是string,把String转化成Number进行比较,一方是Boolean,是的话,将Boolean转换成Number进行比较。+的情况:+两边有值判断两边值的类型,两边都为数字,进行数字计算,若有一边是字符串,另一边也转换成字符串进行拼接,都为引用类型,都转换成字符串。radix是进制,默认是十进制,0x开头的默认16进制,遇到一个有效字符,就不向后查找。val必须是字符串,如果不是先隐式转换成字符串。

2023-12-06 22:39:21 68

原创 js简介、语法,变量、 变量、操作符

HTML定义网页的内容;CSS描述了网页的布局(样式);JavaScript控制了网页的行为;BOM:浏览器对象模型包含window(…)DOM:文档对象模型,通过它可以访问HTML文档所有元素HTML:标签语言,前端常用的编辑器vscode;访问任何网站都必须最先返回一段htmlp标签div标签b标签,所有内容写在标签里面,js代码写在script标签里面,写在body上面会影响页面速度,建议放在整个页面底部。CSS:用来控制样式与布局css写在style标签里面。

2023-12-04 18:45:54 37

原创 文件和异常

在Python中实现文件的读写操作其实非常简单,通过Python内置的open函数,我们可以指定文件名、操作模式、编码信息等来获得操作文件的对象,接下来就可以对文件进行读写操作了。‘r’ 读取(默认)‘w’ 写入(会先截断之前的内容)‘x’ 写入,如果文件已经存在会产生异常‘a’ 追加, 将内容写入到已有文件的末尾‘b’ 二进制模式‘t’文本模式(默认)’+‘ 更新(既可以读又可以写)如何读取纯文本文件def main(): f...

2023-08-05 18:41:00 253

原创 python 常用数据结构

使用列表数值类型是标量类型,也就是说这种类型的对象没有可以访问的内部结构。符串类型是一种结构化的、非标量类型,所以才会有一系列的属性和方法。列表(list),也是一种结构化的、非标量类型,它是值的有序序列,每个值都可以通过索引进行标识,定义列表可以将列表的元素放在[]中,多个元素用,进行分隔,可以使用for循环对列表元素进行遍历,也可以使用[]或[:]运算符取出列表中的一个或多个元素。如何定义列表、如何遍历列表,列表的下标运算。list = [1 , 2 , 3 , 4 , 5]pr

2023-08-05 18:40:32 380

原创 正则表达式

在编写处理字符串的程序或网页时,经常有查找符合某些复杂规则的字符串的需要,正则表达式就是描述这些规则的工具,它定义了字符串的匹配模式。正则表达式基本符号:匹配任意字符:. ,匹配字母数字下划线: \w匹配空白字符:\s匹配数字:\d匹配单词的边界:\b匹配字符串的开始:^ 匹配字符串的结束:$匹配非字母数字下划线:\W匹配非空白字符:\S匹配非数字:\D匹配非单词边界:\B匹配来自字符的任意单一字符:[]匹配不在字符集中的任意单一字符:[^]匹配0次或

2023-08-05 18:38:47 110

原创 文件读取和写入

open()返回一个文件对象,open(filename,mode)f = open('workfile','w')第一个参数是包含文件名的字符串,第二个参数可以是包含一些字符的字符串'r':仅读取文件, 'w':仅写入文件,'a'打开文件以进行添加的模式'r+'打开文件进行读取和写入,模式参数是可选的。'r'如果省略,将被假定。'b'附加模式的文件将以二进制模式打开。此模式应用于所有不包含文本的文件。如果不使用with关键字,则应调用发f.close(),关闭文件并立即释放文件使

2023-08-05 18:37:26 605

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除