- 博客(132)
- 资源 (1)
- 问答 (4)
- 收藏
- 关注
原创 警惕: Python 中的路径穿越
os 和 pathlib 都是 Python 内置的模块,可以很方便的帮助我们完成路径的拼接而无需担心不同系统下的路径格式问题,但却存在一个严重的安全风险:路径穿越
2021-12-21 18:36:50 4009 3
原创 加密算法(一):30行代码破解凯撒加密
以时间划分,1976年以前的密码算法都属于 **古典密码学**,古典密码学现在已经很少采用了,然而,研究古典密码的原理对于理解构造和分析现代密码都是十分有益的。凯撒密码(Caesar cipher)是最经典的**替代法**,据传由古罗马帝国的皇帝凯撒所发明,用在与远方将领的通讯上,每个字母被往后位移三格字母所替代
2020-12-26 19:05:53 8437 30
原创 反反爬虫(0) :还在用 selenium 裸爬吗? 你已经被盯上了!破解WebDriver反爬虫
使用 Selenium 调用 ChromeSriver 来打开网页,还是与正常打开网页有一定的区别的。现在很多网站都加上了对 Selenium 的检测,来防止一些爬虫的恶意爬取。大多数情况下,检测的基本原理是检测当前浏览器窗口下的 `window.navigator` 对象是否包含 `webdriver` 这个属性。
2020-11-29 16:37:27 30646 26
原创 发布你自己的轮子 - PyPI打包上传实践
正所谓 "*人生苦短,我用Python*",Python 的一大优势就是有着丰富且易用的第三方模块。无论你做什么,几乎都能找到扩展包达到你的目的。而这一切,都是完全开源免费的!既然 Python 的核心是第三方扩展包,那么你想不想自己写一个并发布呢?无论是将自己的优秀项目开源出来,还是写一些可以经常复用的小工具,都是一件很棒的事情
2020-11-19 22:44:35 11012 4
原创 pip freeze 导出含有路径 (@ file:///) 问题小记
在 conda 沙箱环境中使用 pip freeze > requirements.txt 命令导出已安装的模块,其中部分模块显示了 `@ file:///...`,而不是具体的版本号
2020-11-01 21:47:14 24840 12
原创 奇思妙想:超链接唤起本地应用
很多人的博客都有这样的小玩意,点击之后就可以直接与博主进行对话,而且无需添加好友。怎么把QQ 跑起来呢,需要我们自己去启动一个线程吗?答案是否定的,Windows 操作系统考虑到了这一点,允许我们为自己的应用程序注册一个协议
2023-03-04 00:17:38 815 1
原创 奇思妙想:QQ临时对话有效性检测
碰到一个需求,检测一批网页上一批 QQ 临时对话是否正常工作。正常情况下,点击 QQ交谈 之后便会唤起用户电脑上的 QQ 应用,并打开临时对话窗口,随着腾讯企点的上线,普通 QQ 基本无法再使用该功能,点击便会遇到如下情况,或者提示 加好友后才能开始聊天。
2023-03-03 22:34:07 1078
原创 Pandas to_sql 函数避坑指南「mssql字符乱码」
使用 pandas to_sql 方法导出数据到 SQL Server 2016,发现一些特殊符号存在乱码
2022-11-09 16:54:26 1656
原创 反反爬虫(2) :关于CSS字体加密,你了解多少?
CSS 字体反爬对于一个 爬虫er 来说应该是家常便饭了,其实现原理也很简单:@font-face:CSS3 中新功能,允许网页开发者为其网页指定在线字体。原本是用来消除对用户电脑字体的依赖,但也有新作用:反爬虫。......
2022-07-09 17:19:48 2661 2
原创 图灵奖级别的设计:计算机中的浮点数
C 语言中,不同数据类型存储格式不同:小数在内存中是以 浮点数 的形式存储的,浮点数和定点数中的 点 指的就是小数点。在六七十年代,计算机界对浮点数的处理比较混乱,各家厂商都有自己的一套规则,缺少统一的业界标准,这个数据交换,计算机协同带来了很大不便。作为处理器行业老大,Intel 早就意识到了这个问题,并打算统一浮点数的世界,其聘请加州大学伯克利分校的 William Kahan 教授以及他的伙伴们来设计浮点数格式。他们的工作完成的如此出色,设计的浮点数具有足够的合理性和先进性,被 IEEE 组织采用为浮
2022-06-02 15:40:46 448
原创 天才般的设计:整数在内存中是如何存储的
文章目录c语言中的整数整型的长度正负数整数如何存储的补码如何简化运算取值范围溢出类型转换转换规则类型转换导致的奇怪结果自动类型转换整型提升c语言中的整数整数是编程中常用的一种数据类型,C 语言使用 int 定义整数。int 一般占用 4 个字节「Byte」,一共 32 bit。如果不考虑符号位:00000000 00000000 00000000 00000000 : 最小值,数字 011111111 11111111 11111111 11111111 : 最大值,232−12^{32}-12
2022-05-27 18:53:12 2049 1
原创 速看:CryptoJS.base64 的不同之处,别再死扣源码了「附正确实现」
当我们在逆向分析 JS 代码时,常见的一个库就是 `CryptoJS`,它实现了众多算法,可以很方便的对数据进行编码,加密。但是它的 Base64 却与正常的 Base64 有一些不同,本文以一个实际案例,以做说明
2022-05-13 17:23:53 4582 1
原创 Makefile 函数中变量未生效问题小记
文章目录问题原因解决问题遇到了一个奇怪的问题,特此记录。变量在 Make 函数中似乎未生效,如下:pwd := $$PWDtest: echo ${subst /,//,${pwd}}结果如下:>>> make testecho $PWD/Users/zzzzls/Deskto可以看到 subst 函数似乎完全没有任何效果!原因感谢 Stack overflow,原文如下:Makefile subst variable not affected?原文
2022-04-26 13:48:15 1472
原创 利用 PHP POST 临时文件机制实现任意文件上传
向 PHP 发送 Post 数据包,如果数据包中包含文件,无论 php 代码中有没有处理文件上传的逻辑,php 都会将这个文件保存为一个临时文件。在文件包含漏洞找不到可以利用的文件时,即可利用这个方法,找到临时文件名,然后包含之!
2022-04-20 16:51:30 6890
原创 Pandas to_sql 函数避坑指南「附可运行正确代码」
今天在使用 Pandas 的 to_sql 方法时,遇到一堆问题,一顿搜索后,靠谱的答案少之又少,各种被误导,特此记录
2022-03-31 17:44:18 5318
原创 aiohttp: AttributeError: ‘NoneType‘ object has no attribute ‘get_extra_info‘
aiohttp: AttributeError: 'NoneType' object has no attribute 'get_extra_info'
2022-01-17 17:57:52 1129
原创 两步验证: 使用Python接入Google Authentiator
用户常常会在不同的网站使用相同的密码,一但一个网站账户的密码泄露,就会危及到其它使用相同密码的账户。为了解决这个问题,一些网站在登录时除了要求输入账户密码之外,还需要输入另一个一次性密码。例如银行常用的动态口令卡。
2021-11-16 15:54:10 4794
原创 协程future对象及concurrent.futures
Future 是一种特殊的低层级可等待对象(Task是Future的子类), 表示一个异步操作的最终结果 当一个 Future 对象被等待, 这意味着协程将保持等待直到该 Future 对象在其他地方操作完毕
2021-08-30 23:10:34 3090
原创 异步编程 && 协程asyncio
协程(Coroutine)不是计算机提供,程序员人为创造协程也可以称为微线程, 是一种用户态的上下文切换技术。就是通过一个线程实现代码块相互切换执行
2021-08-30 22:16:26 433
原创 安卓前瞻:ADB(安卓调试桥)基本使用
Android 调试桥(ADB) 是一种功能多样的命令行工具,可与设备进行通信。ADB命令可用于执行各种设备操作(例如:安装和调试应用),并提供对 Unix shell的访问权限。它是一种**客户端-服务器**程序
2021-07-23 11:17:02 459 1
原创 HTTPX: 青出于蓝,比肩requests的新生代网络请求库
作为新生代的网络请求库,HTTPX 不仅支持 requests 的所有操作,同时支持 异步API 及 HTTP/2。根据官网的描述,总结有如下特点:- 标准的同步接口及异步支持- HTTP/1.1 和 HTTP/2- 直接向 WSGI/ASGI 应用程序发出请求- 严格的超时设置- 全类型注释- 100% 测试覆盖率
2021-06-04 13:50:07 661 2
原创 重读Scrapy:Spider篇_CrawlSpider的使用分析
CrawlSpider 是 Spider 的一个子类,最显著的功能就是 `LinkExtractors` 链接提取器,相较于 spider 来说,CrawlSpider 更适用于 需要从内层网页爬取数据的场景例如:在新闻网站中,我们首先需要爬取新闻列表页,获取所有新闻的URL,然后再请求这些URL,获取新闻的详情数据
2021-03-09 09:34:54 410 2
原创 js逆向:无所不能的 hook 钩子函数
Hook 技术又叫做 **钩子函数**,在系统调用一个函数之前,钩子程序就先捕获该消息,得到控制权,这时钩子程序既可以加工处理(改变)该函数的执行行为,还可以强制结束消息的传递。简单来说,就是把 系统中的程序拉出来按照我们编写的代码逻辑执行
2021-03-07 14:46:00 9666 2
原创 JS调试干扰 - 无限debugger 绕过
**无限 debugger**,非常烦人的一种 JS 反调试手段,但是这么叫并不是很准确,因为它并非是无限的,也不会写在 `while (true)` 中,否则还没等我们调试,浏览器就先卡死了。因此,它还有一个靓丽的名字:debugger 地狱!
2021-03-04 23:30:05 2393 3
原创 加密算法(二):Base64的一大误区,千万不要踩这个坑
可能有朋友在不了解 Base64 的情况下,将其误用于数据加密或数据校验。乍一看,Base64 编码过的字符串有一种被加密的感觉,但是该字符串会存在许多 Base64 的特征,只要发现了这些特征,那么这个字符串大概率就是一个经过 Base64 编码后的字符串,此时无需任何额外信息即可轻松解码得出原始文本。
2020-12-30 21:08:54 6962 12
原创 倒行逆施:__eq__与 __ne__ 之间 原来还有这层关系
在我们定义一个类的时候,常常想要将这个类实例化的多个对象之间进行比较,一般情况下,当两个对象中的属性一致的时候,我们会认为这两个对象是相等。在如下这段代码中,我们使用同一个类实例化了两个对象,这两个对象的属性完全一致,当我们使用 == 进行判断时,却得到了 `False` ,这是因为 == 默认会使用 **内存地址** 进行比较,那么我们能否重新实现这部分判断的逻辑呢?
2020-12-16 21:15:52 922 3
原创 数据结构:用 Python 实现单向链表
链表 (Linked list)是一种常见的基础数据结构,是一种线性表,但是并不会按线性的顺序存储数据,而是在每一个节点里存到下一个节点的指针(Pointer)。接下来我们就是用 Python 来实现一个基础的 **单向链表**,在 C / C++ 中,通常采用 "指针+结构体" 来实现链表,而在 Python 中,我们可以采用 "引用+类" 来实现链表。
2020-12-15 23:33:23 1508 11
原创 搞不懂 Python 中的时间操作,来看看这里吧!
在 Python 使用过程中我们经常会遇到时间格式转换的问题,例如:1. API 的返回结果中,时间参数多为 timestamp格式,为了方便展示给用户,我们一般需要将其格式化为 str2. 当用户输入时间字符串时,我们需要转换为 timestamp格式,方便在程序中进行处理3. 当我们需要对时间进行操作时(时间加减等),又需要将时间转换为 Datetime 格式进行一些便捷操作
2020-12-13 19:04:10 1072 1
原创 一剑化三清:使用 Rquests 库模拟 POST请求中常见的数据提交格式
Content-Type 是指 http/https 发送信息至服务器时的内容编码类型,用于 **表明发送数据流的类型**,服务器根据编码类型使用特定的解析方式,获取数据流中的数据。浏览器原生 `<form>` 表单,如果不设置 `enctype` 属性,那么最终就会以 `application/x-www-form-urlencoded` 方式提交数据...
2020-12-08 21:45:27 1543 16
LoveString 字串编码查询器
2019-12-18
小白请教 Python 打包 exe 问题
2018-12-31
Python Requests 保存 Cookie 到本地发生的问题
2018-12-27
字符串 截取部分内容 , 求提取方案
2018-12-23
Python 下载网络图片 的 问题
2018-12-22
TA创建的收藏夹 TA关注的收藏夹
TA关注的人