前言

首先需要说明的一点是, 本篇并不是为了讨论 ObjectId 和自增 id 谁更好用.在笔者看来, 文档型数据库和关系型数据库的使用场景不同, 有不同的使用倾向是理所当然的事情, 没有必要拉到一块儿”关公战秦琼”.

本篇单从设计的角度来说, 为什么 ObjectId 和 自增 id 分别使用于各自的使用场景.

DataBase

Frankenstein 是用来搜索可用数据源的一个小工具,它包含两个主要功能

  1. 友链扫描
  2. 关键字扫描

这两个部分本质上都是对现存的数据源进行遍历搜索,区别在于二者的扫描侧重点不同.

本篇主要是 友链扫描 的开发记录.

>
dailyTools

Poirot 是自动将字体文件(woff\woff2\ttf)映射为结果字典,主要用于中文字体反爬虫的破解,包括 css 字体映射和图片文字反爬虫.

实现的基础思路可见于字体反爬虫解决方案-自动化通过字体文件生成映射字典.

Mori 同属于爬虫工作的小工具.名字取自大侦探波洛(Hercule Poirot). 与 Mori 的脚本服务不同,这次从实际使用的角度考虑,采用了 web 服务的形式.

本篇记录了 Poirot 的开发中学习到的技术和踩到的坑。

主要包括:

  1. flask-websocket 的使用
  2. 进度条的实现
>
spider

由于之前疏于对公司电脑上面的 C 盘的管理,它的存储空间不出意外地炸了.

于是就开始了繁琐的清理工作.首先通过 设置 -> 存储 找到 C 盘占用空间的大头.也就是微信文件和 miniconda,微信由于日常的工作联系等积压了大约 5G 左右,miniconda…emmm…8G = =

看了一下,pytorch、tensorflow 等一系列的包、环境,这个手术动起来还是挺麻烦的,牵连太多了.

不过随着工作任务的固定,有些包和环境确实也不需要了,于是就有了接下来的一些迷惑操作.

>
wsl

最近在寻找一些毕设要用到的数据,医药相关的,恰好在某个网站上面找到了备份数据库(手段不太光彩,这里就不细说了),省去了写爬虫的麻烦。

不过这些备份文件是 .MYD / .MYI / .frm 这样的后缀,emmmmm,对于用惯了 .sql 的我来说,还是很头大的。

本篇的主要内容就是如何使用 .frm / .MYI / .MYD 文件来恢复数据库,同时,做了一些关联的延申。

>
mysql

字体反爬虫

初级的字体反爬虫可以参照字体反爬的解决方案——突破抖音反爬虫机制这边文章.

类似的文章教程不胜枚举,所以这里对于 字体反爬虫基础 就不做赘述.本篇要讨论的是如何处理在多大数百、数千个自定义字体的复杂情况下完成从字体文件生成映射字典的工作.

上面提到的文章,采用的是人工映射,这在只有 0~10 这样的简单情况下自然是最方便的处理办法,但是对于大量字体的情况,就捉襟见肘了.并且,即使花了半天时间将这些字体一一映射,万一网站的字体库发生变化,或者网站本身就采用动态字体库,就很麻瓜了.

本着”花半天时间做重复性的苦力工作,不如花一天时间做创造性工作”的原则(预估的开发时间比较充裕,才有时间来实践这些突发的灵感),决定搞一些懒人方法.

>
spiderantispider crack

上周在外网搭建了一个服务,主要是用来对 Mori 的各种处理状态做测试.

今天在看网站统计的时候,发现请求的次数不太正常,主要表现就是出现了下面这种画风的请求.

INFO:     174.49.25.36:51271 - "GET / HTTP/1.1" 200 OK
INFO:     14.139.155.142:41680 - "GET /currentsetting.htm HTTP/1.1" 404 Not Found
INFO:     91.241.19.84:58868 - "GET /wp-content/plugins/wp-file-manager/readme.txt HTTP/1.1" 404 Not Found
INFO:     91.241.19.84:58844 - "GET /?XDEBUG_SESSION_START=phpstorm HTTP/1.1" 200 OK
INFO:     91.241.19.84:42642 - "GET /console/ HTTP/1.1" 404 Not Found
INFO:     91.241.19.84:36206 - "POST /api/jsonws/invoke HTTP/1.1" 404 Not Found
INFO:     91.241.19.84:55124 - "POST /vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php HTTP/1.1" 404 Not Found
INFO:     91.241.19.84:36174 - "GET /vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php HTTP/1.1" 404 Not Found
INFO:     91.241.19.84:42156 - "GET /index.php?s=/Index/\think\app/invokefunction&function=call_user_func_array&vars[0]=md5&vars[1][]=HelloThinkPHP21 HTTP/1.1" 404 Not Found
INFO:     91.241.19.84:52646 - "GET /?a=fetch&content=<php>die(@md5(HelloThinkCMF))</php> HTTP/1.1" 200 OK
INFO:     91.241.19.84:53606 - "GET /solr/admin/info/system?wt=json HTTP/1.1" 404 Not Found
INFO:     203.205.34.139:47518 - "GET / HTTP/1.1" 200 OK
INFO:     182.185.14.56:62446 - "GET /currentsetting.htm HTTP/1.1" 404 Not Found

随手摘了一个 ip (219.149.212.74) 查询了一下,竟然是国内的 = =|||

又想到从大二下接触 web 开发,到现在两年多,部署了几个服务,但是却没有好好分析过网站的日志文件,正好就趁着这个机会看看吧.

>
awk

前言

目前主要接触的爬虫开发主要有两种:

  1. 静态网页
  2. api

我司已经有静态网页的检测工具,不过随着 api 类爬虫日益增加,需要一个新的可以用来检测 api 变动的脚本.

这里我选择开发一个命令行工具,而非 web 平台服务.理由是前者更加 geek && cool.并且前者只要稍作改动,就可以很好地兼容后者.

我将其命名为 Mori Kokoro , 取自柯南的 毛利小五郎 . 就一个检测脚本而言,它的工作与侦探 🔍 相类似(发现坏家伙 😀).同时这个脚本算是我第一个开发的命令行脚本,无论是代码质量,还是功能实现,都缺乏信心,所以就以毛利为名.

Mori 项目地址

main

>
diyTools