自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(34)
  • 问答 (1)
  • 收藏
  • 关注

原创 视频局部区域移动检测, 删除相似帧

视频局部区域移动检测, 删除相似帧, 视频时长压缩, 视频指定区域移动检测, 视频感兴趣区域移动检测

2023-08-21 00:06:53 948 1

原创 Ireport 报表设计部分填坑记录 基于Ireport 4.5.1

Ireport 报表设计 部分问题填坑分页断行,数值列可以同时打印整数和小数,序号分页之后连续,Last Page Footer 紧跟Detail,字体大小动态缩放

2022-10-24 11:54:02 2102

原创 局域网内共享打印机的几种方式

局域网内共享打印机的几种方式: 同级,上级,下级共享打印机

2022-06-19 16:51:46 48924

原创 Pyinstaller 打包 Pyzbar 后,exe程序无法运行的解决方案

Pyinstaller 打包 Pyzbar 后,exe程序无法运行的解决方案问题Pyinstaller 是python 打包exe程序的第三方库, 大多数情况下 使用 pyinstaller -F 脚本.py 可以打包出一个能够运行的exe程序但是当脚本中导入了某些第三方库时, pyinstaller 打包出的程序将无法运行(闪退),其中一个原因是pyinstaller 在打包时没有将某些第三方库一并打包进去, 就会导致 import 语句失败报错, 程序闪退.解决方

2022-05-08 20:44:48 5057

原创 猿人学第5题,hook任意cookie被设置的瞬间

直接hook任意cookie被设置的瞬间, 定位到cookie设置的接口新的hook方式,捕获任意一个cookie被设置的瞬间其实经过修改,可以捕获任意对象的指定属性执行指定方法时的瞬间直接在搜索引擎搜索(hook cookie)也可以查到以下代码(这是一个油猴的脚本)// ==UserScript==// @name        Hook Cookie// @namespace&n

2022-03-23 23:43:36 2199 2

原创 猿人学第二题,手撕OB混淆给你看(step06-控制流平坦化)

前情回顾:猿人学第二题,手撕OB混淆给你看(Step1-开篇)猿人学第二题,手撕OB混淆给你看(step2-字符串数字回填)猿人学第二题,手撕OB混淆给你看(step3-函数调用还原)猿人学第二题,手撕OB混淆给你看(step4-对象调用还原)猿人学第二题,手撕OB混淆给你看(step5-分支流程判断)控制流平坦化这一章会使用上一章生成的 02_ob_if_reload.json文件最终生成一份02_ob_sort_reload.js文件和一份 02_ob_sort_reload.jso

2022-03-16 11:01:07 822

原创 猿人学第二题,手撕OB混淆给你看(step5-分支流程判断)

前情回顾:手撕OB混淆(Step1-开篇)手撕OB混淆(step2-字符串数字回填)手撕OB混淆(step3-函数调用还原)手撕OB混淆(step4-对象调用还原)分支流程判断这一章会使用上一章生成的 02_ob_obj_property_reload.json文件最终生成一份02_ob_if_reload.js文件和一份 02_ob_if_reload.json 文件上一章我们已经把if (_0x5500bb['qsLgw'](_0x5500bb['RmLGP'],

2022-03-15 11:35:42 269

原创 猿人学第二题,手撕OB混淆给你看(step4-对象调用还原)

前情回顾:猿人学第二题,手撕OB混淆给你看(Step1-开篇)猿人学第二题,手撕OB混淆给你看(step2-字符串数字回填)猿人学第二题,手撕OB混淆给你看(step3-函数调用还原)对象调用还原这一章会使用上一章生成的 02_ob_call_function_reload.json文件最终生成一份02_ob_obj_property_reload.js文件和一份 02_ob_obj_property_reload.json 文件上一章,我们已经把_0x434ddb[$dbsm

2022-03-14 09:55:36 745

原创 猿人学第二题,手撕OB混淆给你看(step3-函数调用还原)

前情回顾:猿人学第二题,手撕OB混淆给你看(Step1-开篇)猿人学第二题,手撕OB混淆给你看(step2-字符串数字回填)函数调用还原这一步会使用上一步生成的 02_ob_string_number.json文件和开端生成的02_ob_left_3.js 文件最终生成一份02_ob_call_function_reload.js文件和一份 02_ob_call_function_reload.json 文件上一章已经将函数调用时的参数都还原出来了,把_0x434dd

2022-03-13 09:58:28 472 4

原创 猿人学第二题,手撕OB混淆给你看(step2-字符串数字回填)

猿人学第二题,手撕OB混淆给你看(Step1-开篇)本系列所有所需文件都在这里:https://www.aliyundrive.com/s/D2DViEUL8x7字符串与数字回填这一步会使用上一步生成的 02_ob_right_3.json文件最终生成一份 02_ob_string_number.js文件和一份 02_ob_string_number.json 文件之前已经下载了源JS文件,并将其分割成了两部分,02_ob_left_3.js : 执行第二步

2022-03-12 13:15:03 1536

原创 猿人学第二题,手撕OB混淆给你看(Step1-开篇)

基于AST 手撕OB混淆猿人学题目2

2022-03-11 21:40:27 3574

原创 猿人学第一题采用RPC的解法

题目1:抓取所有(5页)机票的价格,并计算所有机票价格的平均值,填入答案。浏览器: edgeIDE: pycharmSekiro: 基于长链接和代码注入的Android private API暴露框架 (github.com)  https://github.com/virjar/sekiro分析网页1.F12查看数据来源发现有个调试断点,影响了使用,我们启用本地文件替代,将这个文件里的3行代码直接删掉,就可以了,具体启用本地替代方式: 在网页的JS中注入Hook然后

2022-03-06 13:14:01 2250 1

原创 Sql 翻译 Pandas 或 Django-ORM

目前已有 Django-ORM, PandasSQL_To_Everythingimage-20220227142548210以下全部 sql 语句基于 mysql 的一个命令行插件mycli 编写 ,所以,关键字都是小写,结尾也没有分号以下所有 Django-ORM均在django 第三方库 django-extensions 的shell_plus 环境下编写以下所有Pandas 语句都在jupyter notebook界面中编写测试数据集下载:host:http

2022-03-04 20:44:45 646

原创 关于奖金压缩的一种算法

目的:出于外界不可抗力因素,某公司需要给部分奖金过高的员工进行奖金压缩条件:1.规定了一个压缩区间,压缩后的奖金必须在此区间内2.压缩前a>b,则压缩后a>b3.压缩后,同一个人今年的奖金尽量比去年的要高

2022-03-02 11:39:55 116

原创 在网页的JS中注入Hook

在网页的JS中注入HookChrome浏览器的overrides的使用 (itcoder.cn)[1]以下为Edge 的示例1.本地新建一个目录2.用浏览器关联该目录选择目录后,浏览器上方会弹出一个横条提示确认点击允许后即可关联3.将原文件添加进关联目录回到网络标签右键点击JS 文件选择保存以替代即可4.修改源文件此时即可在源文件中进行修改修改完成后记得 CTRL + S 保存5.刷新网页,查看效果注: 是否禁用缓存,不影响本地替代效果References[1] Chrome浏览器的overrid

2022-03-01 10:29:29 1485

原创 使用RPC对某者web端骑行数据进行爬取

使用RPC技术hook web端JS骑行app某者web端爬虫2022.21.获取轨迹ID通过更改年月,可以发现获取每个月轨迹ID 的方式,这个非常简单,只需要拷贝请求头headers就可以直接获取2.获取轨迹详情可以发现三个请求,其中,中间的那个获取的是轨迹的聚合信息,比如均速,总里程之类的第三个请求获取的是轨迹点信息,但是我发现这个轨迹点信息没有包含经纬度?最后在第三个请求的末尾,找到了一行未解码的字符串encoding_points,非常的长,看名字大概率是编码之后的经纬度信息,到这里,就必须要深入J

2022-03-01 10:16:53 940 1

原创 对捷某特app的逆向

由于上一篇文章爬虫返回数据为无法常规解析的二进制数据爬取捷某特骑行app 的骑行记录数据所以必须对捷安特骑行app做反编译,查看数据的具体解析方式所需工具通用jadx : apk反编译软件(windows) 下载地址: https://github.com/skylot/jadx/releasesintellij idea : java代码IDE(可选)仅针对捷安特骑行appflatbuffers : 数据序列化方案 下载地址,直接安装,只需要手动配置环境变量https://g

2022-02-28 10:15:08 1573

原创 python解析佳明fit文件

佳明 fit 文件解析

2022-02-26 11:14:12 4138 3

原创 Pandas 写入 Excel 的几种情形与方式,覆盖,新增,追加,对齐

追加,覆盖,新增

2022-02-24 14:57:45 42992 9

原创 用装饰器简化大量if-elif代码

源码地址:https://github.com/edgedb/edgedb/blob/master/edb/common/value_dispatch.py鸣谢原文:一日一技:使用装饰器简化大量 if…elif…代码源码只对同步函数有效果,我将其稍作修改后,让其针对同步,异步,类中的实例方法也具备效果先看食用方式这里展示最复杂的例子,即:装饰类中的异步实例方法如要查看简单的例子,请点击上方的一日一技文章,里面展示了该方式最简单的使用例子# 示例:import asynciofrom matc

2021-11-27 01:54:04 231

原创 django-channels自定义中间件验证token的方法

测试版本:python 3.8djnago 3.2channels 3.0原始需求在使用channels 建立websocket连接的时候,需要验证客户端的token,并保存一些关键信息实现原理使用自定义的中间件进行对token的验证,当然,前端需要把 token放在 headers里实现步骤1.创建一个中间件,用来验证token项目目录下,新建一个 middleware 目录,内部创建一个 my_middleware.py 文件# middleware/my_middlewa

2021-11-26 13:06:28 2823 1

原创 django-channels如何向组内特定成员推送信息的解决方案

测试版本:python 3.8djnago 3.2channels 3.0需求向channels的小组内某(些)个特定成员推送信息,而不是向组内所有人员群发实现原理websocket 三件套(scope, receive, send),其中send是一个已经绑定客户端的信息发送函数,我们只需要建立一个类似这样的字典>>> send_dict = {'uid':send},就可以向任意一个特定的客户端推送信息,方式如同:send_dict['uid']({'type':

2021-11-25 21:58:19 2114

原创 微信小程序map 动态修改markers的解决方法

微信小程序map动态markers的解决方法先上效果图这里演示点击标记点,改变他的气泡背景颜色和字体颜色1.动态修改数据,需要用到 this.setData(),2.markers 是一个数组,这里需要涉及setData 修改内部属性的方式:**page.js --> onMarkerTap() **// bindmarkertap="onMarkerTap"onMarkerTap(res) { let len = this.data.markers.length

2021-11-16 15:44:30 4298

原创 让 pyjwt 在token将要过期时给出提示

在pyjwt中,decode时如果token过期,则会报出jwt.ExpiredSignatureError的错误,但是当token快要过期时,却没有相应的提示此方法会重写 PyJWT 的 _validate_exp 函数,以实现该功能示例依托于 django首先需要安装 pyjwt 模块pip3 install pyjwt1.在项目目录下创建 utils/jwt 子目录2.在jwt目录中分别创建 _init_.py 和 api_jwt.py 文件# api_jwt.py# 适用于 p

2021-10-28 16:08:04 1358

原创 python 异步函数添加装饰器

异步函数添加装饰器对一个爬虫的异步函数,在其功能函数上添加装饰器,用于打印错误日志import aiohttpimport asyncioimport run_change # 这是一个防止 asyncio.run()有时会报错 RuntimeError:Event loop is closed 的模块,需要手动编写,下面一个代码块有提供def wrapper1(func): async def wrapper(*args, err, **kwargs): resu

2021-10-08 11:39:59 1390

原创 Python 装饰器的执行顺序

装饰器链:一个函数可以被多个装饰器修饰构建函数时的逻辑 由内向外 执行添加在主函数之前的逻辑 由外向内 执行添加在主函数之后的逻辑 由内向外执行def wrapper01(func): print('set_01') def wrapper(*args, **kwargs): print('run_01') result = func(*args, **kwargs) print('end_01')

2021-10-05 20:11:22 244

原创 esp32cam门禁系统简易教程

esp32cam门禁系统简易教程(人脸识别)1.环境安装(最好有梯子)(arduino IDE)1.官网下载地址 选择相应版本下载Windows ZIP file 无脑安装2.配置IDE,打开IDE,文件->首选项->附加开发板管理网址里填入 https://dl.espressif.com/dl/package_esp32_index.json3.配置开发板,工具->开发板->管理开发板->搜索esp32->点击安装(这里需要梯子,没有的话需要去Github下载

2021-03-02 22:37:02 8288 6

原创 esp32cam 中断函数内使用delay不执行

esp32cam 中断函数内使用delay不执行的问题int pushButton = 12;int outputButton = 13;volatile byte state = LOW;void setup() { Serial.begin(115200); pinMode(outputButton, OUTPUT); // 创建中断:attachInterrupt() attachInterrupt(digitalPinToInterrupt(pushButton),Int

2021-03-02 18:07:07 1286

原创 django3,websocket,asgi,daphne,nginx 结合使用示例

这篇文章主要讲解在 django3 的项目中,如何使用 websocket这是一个 代理IP 的小项目,当前为0.2版本,该版本分为三端,服务器端,代理IP端,用户端可以做到在任意一台服务器和任意内网电脑上一键部署,一键启动,使该服务器通过内网机器为你提供代理IP服务。可以做到在服务器数量有限的情况下,部署更多的代理IP该项目今后的发展方向是在手机上部署代理IP端,以获得更多的代理IP当前环境为:ubuntu 20.04python 3.8aiohttpasynciodjango 3.1

2020-08-17 15:14:27 2154

原创 一次对dockerfile所生成镜像的大小缩减

一次对dockerfile所生成镜像的大小优化针对前两天构建的一个ubuntu + nginx + uwsgi + python 的代理IP服务 进行优化的尝试0.1版本的dockerfile文件:FROM ubuntuMAINTAINER tina_han<553630934@qq.com># 更改apt源RUN sed -i s@/archive.ubuntu.com/@/mirrors.aliyun.com/@g /etc/apt/sources.listRUN apt-ge

2020-08-11 01:17:39 1540

原创 Django里面timezone.now()转时间戳/秒数的属性

Django 里timezone对象连度娘都不知道的使用技巧小玉的玉 小玉的小本本 今天今天碰到一个需求是:从MySQL中取出一个时间字段存入redis,在前端发起请求后,将该时间字段与当前时间的差值(s)响应给前端以便于前端用作倒计时。这里呢整个项目使用的是django框架,django在模型层定义时间字段的时候,使用的是datatimefiled(defult=timezone.now),这里存到数据库里面的是字符串,但是如果你是用django的方式取出来:Model.object.get(………

2020-06-03 23:45:05 2678

原创 Ajax 异步与同步(jQuery 在函数中修改全局变量)

还是最近在做的那个漫画网站,商定详情页面以无限下拉方式来体现,取消古板的下一章,下一页这样的高频点击按钮。这种方式的请求就得用Ajax来发送。首先绑定一个下拉滚动条到达某一位置的事件函数,然后在其中编写Ajax的逻辑。具体方式就是在后端响应的数据中,除了发送当前请求的图片URL之外,还要包含前端下一次请求的具体内容(哪本漫画,哪一章节,哪一页),这样前端就只需要把响应数据存下来,等着下一次发送请求就OK了。如何存储响应数据呢?这里可以使用jQuery调用cookie来保存数据,但是cookie这个东西,

2020-05-30 23:32:50 813

原创 MySQL分布式ID简单应用(伪雪花)

小玉最近在做一个漫画网站的业务,需要对大量的静态资源(图片)进行定位,考虑到web端的缓存问题,需要对所有图片名字进行MD5运算,以免图片因为名字重复影响体验。而服务器端呢,决定用MYsql对图片做路径储存,redis做缓存,因为图片名字经过MD5运算之后就会失去其规律性,所以需要对每一张图片进行精准定位:定位到该图片属于哪一本漫画,哪一章节,哪一页。这里就有一个问题:如何进行定位,小玉当然可以在MySQL里面使用三个字段分别来表示,但是这样会大大降低查询效率。此时就需要考虑分布式ID的一种方式(雪花算法

2020-05-22 00:33:42 224

原创 创建一个隐藏的下拉菜单 H5-CSS-JS

600字最近开始和朋友写一个代购的前端页面样式,目前还只是针对于PC端的web界面。有一个需求是:当鼠标移入导航栏的某一个元素时,弹出一个下拉菜单。在看过几篇度娘的攻略之后,暂定实现原理为:将下拉菜单CSS的display属性默认为none。这样整个下拉菜单就处于隐藏状态。然后在鼠标移入目标元素时,就是触发hover属性时,将下拉菜单的display属性更改为block,这样就完成了整个效果。...

2020-05-04 09:37:04 1327

空空如也

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

TA关注的人

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