自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(64)
  • 资源 (1)
  • 收藏
  • 关注

原创 Fiddler的配置和使用

命令方式的优点在于仅影响指定URL,不会影响其他URL。会提示下图安装证书,按照步骤安装即可。将这四个选项框都进行勾选, 在勾选。是影响所有URL的。

2023-09-14 23:40:30 2556

原创 Hook插件

原理:重新定义函数,使得调用位置走我们重新定义的函数,改变执行流程。因为atob为浏览器自带函数, 所以选择Hook时机应该在最前面。作用: 输出分析日志,定位关键点, 返回结果。

2023-03-19 21:23:51 1238 1

原创 高级JS补环境框架-第一章

结果可过瑞数

2023-03-12 22:50:13 2390

原创 【爬虫】 Vscode无环境联调和Ast-Hook内存漫游

【代码】【爬虫】 Vscode无环境联调和Ast-Hook内存漫游。

2022-12-25 17:13:11 1073

原创 简单JS补环境

document、navigation 最好补为。

2022-12-10 23:34:33 3924 1

原创 某验三代滑块流程分析

点击流程拖动流程可以看出图片为 进行的位图操作。使用 在canvas创建的时候进行断点 为图片的宽度和高度2.2、 js分析刷新canvas处断点,猜测进行还原图片的代码。在case中打断点进行跟踪在向下走, 走到还原图片逻辑代码2.3、Python还原代码二、 w值定位2.1、w值生成位置选择堆栈进入, 打上断点。再次请求做一些拼接的操作, 没发现有用的信息,继续向上跟栈看下该方法的头部,发现内容有需要的值注意作用域,该作用域下不能出现 var s= 或s= 如果这

2022-12-04 22:32:03 684

原创 Supervisor+Docker+Nginx+Flask部署项目

【代码】Supervisor+Docker+Nginx+Flask部署项目。

2022-10-15 02:48:22 1439

原创 Docker部署进阶

Dockerfile 是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明。

2022-09-18 01:18:41 935

原创 docker安装和常用命令

Docker的主要目标是“Build,Ship and Run Any App,Anywhere”(一次镜像,处处运行)。将应用打成镜像,通过镜像成为运行在Docker容器上面的实例,而 Docker容器在任何操作系统上都是一致的,这就实现了跨平台、跨服务器。只需要一次配置好环境,换到别的机子上就可以一键部署好,大大简化了操作。

2022-09-13 22:57:48 976

原创 猿人学-第四题

通过测试发现, 可以将left 中的数值除以11.5通过下面运算可得到结果。断点, 查看请求加密方式。返回HTML代码中带有。偏移值, 要计算偏移。

2022-08-08 23:05:53 7557

原创 猿人学-第三题

那么用户应该考虑在 Session 对象上面设置默认 header,只要将 Session 设为一个定制的 OrderedDict 即可。这样就会让它成为优选的次序。requests 库 的header排序是会被优先选择的,而 Session对象中不会。发现访问并没有返回到cookie, 对网页端和python模拟进行对比发现。可以看到会请求两个请求, 第一个请求返回。,第二个请求带上就可以访问。对生成数据的接口进行。进行重放, 发现数据。...

2022-08-06 16:45:03 1431 3

原创 猿人学-第二题

后面页面接口都带着第一次返回的cookie。但是第一次页面中返回值为空。, 如果时机不对是捕捉不到m值的。script断点标签。相应函数不进行格式化。

2022-08-06 15:17:40 1875 1

原创 猿人学-第一题

猿人学-第一题

2022-07-30 01:37:42 1135 1

原创 逆向爬虫-sojson混淆反调加密

文章目录一、 获取sojson代码二、sojson加密特点和原理三、过sojson姿势方法3.1、格式化正则释义![在这里插入图片描述](https://img-blog.csdnimg.cn/16b654ad06cf40ccbffd2e436af7c0ce.png)3.2、网页调试过sojson3.3、 静态文件替换过sojson一、 获取sojson代码JS加密混淆本次使用代码:(function(w, d) { w.info = "这是一个一系列js操作。"; d.warning =

2022-05-04 22:27:48 3237 1

原创 爬虫扣JS注意事项

文章目录一、函数嵌套函数调用方法1.1、外层定义变量导出1.2、将方法改为自执行二、函数嵌套对象调用方法三、webpack方法调用3.1、webpack形式3.2 扣webpack js步骤四、函数的导出一、函数嵌套函数调用方法function xxx(){ let hex_md5 = function () { console.log("XiaoHao") }}此时如何调用hex_md5呢,其实将hex_md5方法导出即可。1.1、外层定义变量导出let _h

2022-04-24 00:07:30 1645 1

原创 Python Packages问题

文章目录1.PyExecJS (execjs)1.PyExecJS (execjs)问题: 在高版本中报错Exception in thread Thread-1: UnicodeDecodeError: ‘gbk’…解决方案:在导入execjs之前修改编码。import subprocessfrom functools import partialsubprocess.Popen = partial(subprocess.Popen, encoding="utf-8")impor

2022-04-18 00:27:30 318

原创 JS逆向hook详解

文章目录一、什么是hook?1.1、理解Hook1.2、Object.defineProperty()二、常见的hook注入方式2.1、fiddler插件2.2、谷歌浏览器插件(Tampermonkey油猴)三、常见的hook代码总结3.1、Hook Cookie一、什么是hook?在 JS 逆向中,我们通常把替换原函数的过程都称为 Hook。一般使用Object.defineProperty()来进行hook。1.1、理解Hook以下先用一段简单的代码理解 Hook 的过程:function a

2022-04-10 23:31:22 5520

原创 Python APScheduler 定时任务详解

目录一、基本概念1.1、 触发器:triggers1.2、作业存储器:job stores1.3、执行器 executors1.4、调度器 schedulers二、调度器详解2.1、APScheduler有三种内置的触发器2.2、触发器公共参数2.3、date内置触发器2.4、interval 周期触发任务2.5、cron 触发器 在特定时间周期性地触发,和Linux crontab格式兼容。它是功能最强大的触发器一、基本概念APScheduler全称Advanced Python Schedu

2022-04-09 18:05:25 5478

原创 Chrome DevTools 断点调试方法和技巧

文章目录一、不同的breakpoint类型二、source 面板详解1、source断点工具栏2、左侧面板2.1 Page2.2、 Snippets2.3、Overrides右侧面板3.1、Watch3.2、Call Stack3.3、 Scope3.4、Breakpoints3.5、XHR/fetch Breakpoints3.6、Global Listeners3.7、Event Listeners Breakpoints一、不同的breakpoint类型注: 最著名的断点类型是line-of-co

2022-04-04 12:25:27 7755

原创 JavaScript中的BOM

文章目录一、什么是BOM?二、关于BOM知识的思维导图三、BOM对象3.1、Window对象3.2、location对象3.3、navigator对象3.4、screen对象3.5、 history对象3.5、窗口尺寸与大小一、什么是BOM?BOM:Browser Object Model 是浏览器对象模型,浏览器对象模型提供了独立与内容的、可以与浏览器窗口进行互动的对象结构,BOM由多个对象构成,其中代表浏览器窗口的window对象是BOM的顶层对象,其他对象都是该对象的子对象。二、关于BOM知识的

2022-03-20 00:19:46 726

原创 Python *arg与**kwarg区别

*arg 与 **kwargs介绍args 是 arguments 的缩写,表示位置参数;kwargs 是 keyword arguments 的缩写,表示关键字参数。这其实就是 Python 中可变参数的两种形式,并且*args 必须放在 **kwargs的前面,因为位置参数在关键字参数的前面。*args的用法*args就是就是传递一个可变参数列表给函数实参,这个参数列表的数目未知,甚至长度可以为0。def test_args(first, *args): print('first par

2022-02-25 17:38:38 3155

原创 Python常用库踩坑记录和源码分析

Pyquery问题1. > 和 空格 的区别import requestsfrom pyquery import PyQuery as pqresponse = requests.get('http://www.gxecs.org/index.php/fb.html', verify=False)doc = pq(response.text)ii = 0# for i in doc("section > div").items():for i in doc("section

2022-02-24 18:15:09 825

原创 asyncio异步io并发编程

一、关于asyncioasyncio是解决异步io高并发编程的核心模块,python3.4后开始引用,可以说是python中最具野心的一个模块,无论是高并发web服务器还是高并发爬虫都可以胜任。asyncio提供了异步IO编程的一整套方案,包括:包含各种特定系统都能够兼容的模块化事件循环。传输和协议抽象。实现了对TCP、UDP、SSL、子进程、延时调用等的具体支持。模仿futures模块但适用于事件循环使用的Future类。基于yield from的协议和任务,可以使用同步编码的方式编写异步

2021-12-15 23:42:35 1403

原创 Python协程和异步IO

一、并发、并行、同步、异步、阻塞、非阻塞并发: 一个时间段内,有几个程序在同一个CPU上运行,但是任意时刻只有一个程序在CPU上运行。并行: 任何时间点,有多个程序运行在多个CPU上(最多和CPU数量一致)。同步: 是指代码调用IO操作时,必须等待IO操作完成才能返回的调用方式。异步: 是指代码调用IO操作时,不必等待IO操作完成就能返回的调用方式。阻塞: 调用函数的时候当前线程被挂起。非阻塞: 是指调用函数的时候当前线程不会被挂起,而是立即返回。...

2021-08-15 16:17:05 427 2

原创 Python多线程并发编程

一、Python中的GIL介绍:GIL的全称global interpreter lock 意为全局解释器锁。Python中的一个线程对应与c语言中的一个线程。GIL使得同一时刻一个CPU只能有一个线程执行字节码, 无法将多个线程映射到多个CPU上执行。GIL会根据执行的字节码行数以及时间释放GIL,GIL在遇到IO的操作时候会主动释放# GIL会释放,最后的结果不定。释放的位置不定total = 0def add(): global total for i in r

2021-07-31 22:55:31 7126 1

原创 Python作用域、闭包与装饰器

一、命名空间1.1、全局命名空间命名空间为 namespace 的直译。解析如下:num = 5name = "xiaohao"以上,我们简单地定义了两个变量,便等同于创建了两个名字与对象的对应关系,这种建立名字与对象映射关系的行为便是命名字典就是一个名字与值对应的典型例子,这使得 python 中的命名空间通常用字典实现。print(globals()){'__name__': '__main__', '__doc__': None, '__package__': None, '__l

2021-07-21 16:14:55 334 6

原创 Python之socket编程

1.什么是 Socket?Socket又称"套接字",应用程序通常通过"套接字"向网络发出请求或者应答网络请求,使主机间或者一台计算机上的进程间可以通讯。### 1.1在Python中,import socket后,用socket.socket()方法来创建套接字,语法格式如下:sk = socket.socket([family[, type[, proto]]])参数说明:family: 套接字家族可以使 AF_UNIX 或者 AF_INET。type: 套接字类型可以根据是面向连接的

2021-07-05 22:41:23 306

原创 Python元类编程

一、property动态属性from datetime import date, datetimeclass User: def __init__(self, name, birthday): self.name = name self.birthday = birthday self._age = 0 @property def age(self): return datetime.now().

2021-06-22 23:58:44 139 2

原创 Python字典修改后没有发生变化(内存地址)

一、代码示例有上图可知, 当两个变量分别指向对象中同一个方法时,返回的内存地址是不一样的。所以得知当修改其中一个对象时,是不会影响另一个中的数据的。二、实际问题回顾分析: 现在要给序列化对象store_data增加一个type字段, 由于两个store_data.data会产生两个不同的内存地址中所以不会实际修改store_data.data的值...

2021-06-04 01:07:13 778

转载 Django 中间件详解

一、简介中间件(middleware)介于 HttpRequest 与 HttpResponse 处理之间的一道处理过程。浏览器从请求到响应的过程中,Django 需要通过很多中间件来处理。二、作用修改请求,即传送到 view 中的 HttpRequest 对象。修改响应,即 view 返回的 HttpResponse 对象。三、方法中间件可以定义四个方法,分别是:process_request(self,request)process_view(self, request, view_

2021-06-02 23:50:57 531

原创 Python一切皆对象

一切皆对象# 一切皆对象def fun_test(name="haha"): print(name)#函数赋给变量是并实列化my_name=fun_testprint(isinstance(my_name,object))my_name("Xiaohao")从结果可以看出,函数也是对象其他类型一样,不在赘述....type,object,class之间的关系type——>int——>1 (type——>class——>obj):a=1b="abc"

2021-05-27 22:03:17 94 1

原创 Python协程&asyncio&异步编程

1、协程简介协程,又称微线程,纤程。协程的作用是在执行函数A时可以随时中断去执行函数B,然后中断函数B继续执行函数A(可以自由切换)。但这一过程并不是函数调用,这一整个过程看似像多线程,然而协程只有一个线程执行。2、实现协程的方法greenlet早期模块yield 关键字asyncio 装饰器(python3.4)async、await关键字(python3.5)[推荐]2.1、 greenlet实现协程安装greenletpip install greenletfrom gree

2021-05-27 21:28:10 205 1

原创 Django JWT登陆与AUTHENTICATION_BACKENDS自定义验证关系

1.相关配置# project/urls.pyfrom rest_framework_jwt.views import obtain_jwt_tokenurlpatterns = [ ... path('login/', obtain_jwt_token),]# project/setting.pyAUTHENTICATION_BACKENDS = ( 'users.views.CustomBackend', #自定义手机号密码登陆 'social_core.backend

2021-05-22 14:00:01 793

原创 python关于迭代器和生成器

1、迭代器当类中定义了__iter__和__next__两个方法。__iter__方法需要返回对象本身。__next__方法,返回下一个数据如果没有了,则需要抛出一个StopIiteration的异常1.1、创建迭代器class IT(object): def __init__(self): self.count = 0 def __iter__(self): return self def __next__(self):

2021-04-24 16:31:56 174 1

原创 Django自定义用户验证字段-重写authenticate方法

在登录过程中不一定只需要username和password来进行登录,可能还会需要手机号加密码邮箱加密码等。一、models.pyfrom django.db import modelsfrom django.contrib.auth.models import AbstractUser# Create your models here.class UserProfile(AbstractUser): """ 用户 """ name = models.Char

2021-04-21 19:08:22 848 1

原创 Django DRF 分页、视图、路由、渲染

一、分页1.1、分页的三种方法PageNumberPaginationurl?page=1&size=2LimitOffsetPagination 从第几个到第几个url?limit=1&offset=1CursorPagination 【游标分页会加密,更安全】url?cursor=cj0xJnA9NQ%3D%3D1.2、实例PageNumberPaginationfrom rest_framework.pagination import PageNu

2021-03-29 17:54:39 230

原创 Django缓存

一、Django缓存系统动态网站的基本权衡是动态的。每次用户请求页面时,Web服务器都会进行各种计算-从数据库查询到模板渲染再到业务逻辑-创建站点访问者可以看到的页面。从处理开销的角度来看,这比标准的从文件系统中读取文件的服务器安排要昂贵得多。1.1、配置缓存缓存系统需要少量的设置。即,您必须告诉它缓存的数据应该存放在哪里-无论是在数据库中,在文件系统上还是直接在内存中。这是影响缓存性能的重要决定。是的,某些缓存类型比其他缓存类型更快。1.1.1、MemcachedMemcached是Django

2021-03-25 14:21:51 99

原创 Django数据库详解

一、管理1.1 配置对于使用django-admin工具创建的项目,settings.py中已经有了DATABASES这个变量,如果没有的话,可以直接创建这个变量,变量类型为字典。

2021-03-20 00:34:46 1197 1

原创 Django DRF认证流程(解析源码)

一、安装restframeworkpip install djangorestframeworkpip install markdown # 为browsable API 提供Markdown支持。pip install django-filter # Filtering支持。二、定义路由urlpatterns = [ path('admin/', admin.site.urls), path('dog/', views.DogView.as_view())]

2021-03-14 18:43:16 309 1

原创 Python爬虫实战——Svg映射型爬虫(大众点评)

一、svg爬虫简介SVG 是用于描述二维矢量图形的一种图形格式。它基于 XML 描述图形,对图形进行放大或缩小操作都不会影响图形质量。矢量图形的这个特点使得它被广泛应用在 Web 网站中。二、svg的具体表现css文件svg文件三、举例详解已知:类名:vhkjj4坐标:(-316px -141px)----取正整数则为(316,141)四、爬取大众点评评论数据①下载网页源代码网站链接: http://www.dianping.com/shop/130096343/revie

2021-03-13 23:37:13 2081 2

空空如也

空空如也

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

TA关注的人

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