爬虫工程师-面试日记
0701657335e84f0c327f6bba26337f2a8d2ddfaa04a524a7a3f409fdb8f60893306f4378e52756f02181b00b260e9ee617ae5105b0b98567ce27cdb2193393323752d36c6c48a3d1f6f808700873b268b1636c8f3675c1e0516370322d4ef3ffccb3fb0aa8336405c0c4a01bb79311ec9001629114a6c249d9fa5a354373e46fd0e751d8548ff42e4b9e2a9a405da64512708c704a879e4d722c5818855607774ce8e6e075fa5b97b96a00cf3f5adc3e3cd70f6ba8ff0a7f1e03c06a20fafb296d7adf13d7041761ee14ade7059382e92af2b1f9fe81921226b3e01ab2b27910bcf641d68b4680b0379b0fb9d2537701049f4ae82edfd3645 ...
《犬夜叉完结篇》,夏天的风吹尽了……
0701657335e84f0c327f6bba26337f2af691d1a3b20cfb6f9400c9b9d8af4bef46eb285526150bd15b1593284ec12495615455963a22911615d2eb40d728fbe56e2442818e539a6df7c468da9476ba83f5a71aadae1b6316bd6878fb94650a577b616c38a14b4099521866d759e53d52b2662e65f582bb97b200771092b6381dce979089e743911f09c295bc73319aca046df58d1344559795d4fc7e14b72aee5e849c8badc855fb6a98039e9a13f5e444fe36500f728739d2e95edbe18791326d3197f7d0be654c82ec1f6de099328717237b400bdb4f29ed4852c100bd5bdf43942b81dc696ec5b49bd58319f6a15e3515db9b0a1a13d05 ...
web逆向-豆瓣读书搜索接口
一直都想写这篇,但之前都太懒,久而久之成了心里的一道坎
首先来看一下原始数据,可以看到 window.DATA 里面是一大串意义不明的乱码
直接全局搜索 window.__DATA__ 然后下断点,刷新页面
进入到 Lt.dispatch 函数内部
这里很明显,r 就是 window.__DATA__,即原始数据,e(t)(n) 意思是原始数据经过了若干个函数的处理
我们进入到函数内部,看看具体做了什么,以及怎么用python来实现相同的功能
第一个函数首先是 (n) 函数
可以看到里面有好几处处理,我们一个一个来复现
a = e.from(r, “base64”)原始数据r经过e.from函数的处理后,变成了Unit8Array的数据类型,其实就是对原始数据进行 base64 解码python主要使用base64标准库实现
1a = list(base64.b64decode(data))
从上图可以看到两个的效果都是一样的
s 和 u
12s = Math.max(Math.floor((a.length - 2 * i) / 3), 0)u = a.slice(s, s + ...
2020~2022工作笔记
Pycharm常用快捷键
ctrl + e 查看最近编辑文件
ctrl + shift + r 根据文件名查找文件
ctrl + h 全局搜索
ctrl + alt + o 优化导入包排序
ctrl + shift + o 开启翻译框
快捷键设置:
放大、缩小设置:File ->setting-> Keymap->搜索框中输入:Increase Font Size(双击选中)->弹出对话框时选择Add Mouse Shortcut(单击)
json、pickle、shelve 各自数据序列化方式的异同和用法json适用于不同类型的语言,支持的数据类型:int\str\list\tuple\dict主要是操作字符串dumps、loads操作 字符串dump、load 操作 文件 (pickle一样的情况)
123456789# dump入文件 with open('cxs.json','w') as f: json.dump(data,fp)json.dump(item, fp=open("zhihu ...
2022~2023工作笔记
0701657335e84f0c327f6bba26337f2a8d2ddfaa04a524a7a3f409fdb8f6089378eadb916c2a3e34bc5f74b21929862ecacf06575cac1a906d3d9fb862c480acbf065fa7ef3edbace837425efe4e0a8324a3f6dac879a6f0ce60803afab30a830cf4270742c621dedf8f093587d5bc0d08b7ea30857b214f55ad79848478e33d58a67e438c33c79890d2a5918b8a21ccd23baf5bfffc946a52e880db57f03798f670935127e0f4e9f3becd6f1cf8f9a47895f7a3dc919bbc9388bade17115f503cef597e4f328572f981668f2f9385526c2f855989c93fe7d0d73c5a80609248d63b73315d3117e050a1465ef795fb490e42049615ffa1a42 ...
爬虫工程师-常见面试题汇总
0701657335e84f0c327f6bba26337f2a8d2ddfaa04a524a7a3f409fdb8f60893ee4bdb865e642277372a90efd22249ddf538df9e3ee0e37ac7e9f5bff32d8144f64ae8850a4f920e9f09ad00f24d13c6e88cfbaf6ea30be02952f814e87090fb6c9a93458735871bec17da2a693728289cd88f5b403b457c8a8e399687a52533439ef9fd5cd8903c0b686f0df805ec72ae1d0c9972c54361dabf49199659625702ac4c19a6dd4347d33cff1b195fca76d94f1499b10fc28e6594fc047ab0f93f9de446462cea09e4b3a2df6cbfa6829efba082c2362c6d7daa035efd25126f51dd822de87650b24842a8f465bd79c06c88cdbafbc1dfc4d5a ...
web逆向-中国人民银行wzwschallenge参数.md
这里无法直接使用浏览器抓包,因为相同url的包会被覆盖掉,直接上 fiddler:你如果用requests直接去请求的话,就会看到上图那一大坨混淆过后的js代码,使用的是sojson.v6版本的混淆
分析一下正常的请求流程,第二个请求很关键,主要是构建正确的 wzwschallenge参数,然后拼接url,才能拿到返回的 set-cookie
网站使用的是 CWAP-WAF服务,随手百度了一下,是中国电子云的一个防火墙服务
那么 wzwschallenge从哪里来呢,看了一下,网站没有其他的js请求,那么肯定就是从开头那一大坨混淆后的js代码里生成的,混淆后的代码太难看了,用AST插件还原一波
定位到这里分析了一下,主要是和 _0x13698a、_0xcff1b8两个函数有关,两个函数代码量也不大,我就直接用python还原算法了,当然扣下来直接运行js代码也行
代码整理1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 ...
web逆向-看某网微信小程序加密分析
抓包分析目标是某招聘类小程序的面试经验数据:通过观察Fiddler 抓到的数据包,我们可以看到这款小程序对两个地方进行了加密,一个是请求参数 QueryString 里面的 b 和 kiv:一个是 Response 里面的文本数据:由于小程序没有像PC端那样有js文件渲染,所以推断是内部的wxapkg文件对数据进行的加解密,因此就需要反编译获取小程序的源码,再进行静态调试分析算法。
源码获取wxapkg文件的获取PC端微信的小程序包缓存路径,一般为 .\WeChat Files\Applet,里面每个 wx 开头的文件夹代表一个小程序,为了锁定目标的小程序,可以先清空 Applet 目录,然后打开小程序,找到目录下唯一的 wx 文件夹,主包 __APP__.wxapkg 就是我们要分析的对象了
反编译(参考链接)反编译前,使用UnpackMiniApp.exe对小程序包进行解密
如果提示安装 Framwork 3.5 失败,重启电脑即可
解密前,需要在根目录下创建好 wxpack 文件夹,不然会报错
接下来就是对解密后的包文件反编译了,cmd打开命令窗口, 进入到 wxappU ...
Python编程-html源码压缩
用爬虫抓下来的html源码,一般都有很多 换行符和空格,现在想实现一个效果,对这些空字符都去掉,也就是对源码做一个压缩
第一时间可能是想到用正则去掉:
new_txt = re.sub(r”>\s+<”, “><”, text)
这样做的坏处是,假如标签的纯文本中存在模式类似 “>\s+<” 的文本,原本的结构就被破坏了,因此最好不要用正则直接去修改 html源码,很容易造成误差
逛了一圈 stockflow,我找到一个方案,就是使用 lxml.etree遍历每个标签节点,对其中的 tail和text 做一个 strip操作,我封装成了一个函数:
12345678910from lxml import etree def remove_tag_space(html_text): tree = etree.HTML(html_text) for tag in tree.iter(): if tag.tail: tag.tail = tag.tail.strip() if tag.text: tag.text = tag.text.str ...
爬虫工程师-css选择器语法总结
HTML文本转DOM树的两种方式
使用lxml.etree1234from lxml import etree html = etree.HTML(html_text)html.xpath("//div[@class='tabslider']/ul")
使用scrapy团队开源的parsel库(推荐),Parsel官方文档12345678910111213141516171819202122from parsel import Selector # 构建DOM树,可解析html文本和xml文本html = Selector(text=html_text or xml_text) # 解析结果的获取和处理# 返回单个字符串html.xpath("...").get()html.xpath("...").extract_first() # 返回结果列表html.xpath("...").getall()html.xpath("...").extract() # 获取节 ...