前言 也算是有一段时间没写博客了。 自从AI Coding愈发成熟之后,许多直接的编码工作已经可以完全被AI取代,许多问题也可以稍微问一问AI就能得到答案。翻看以前的博客,无外乎就是遇到问题经过一番调研找到的解决方案,或者进行了某项编码和开发工作获得的经验。前者现在已经大部分能在几分钟内用AI解决,而后者在如今Claude Code、Codex等Agent的帮助下也变得很容易,甚至Agent可以直接在服务器上Debug和做迁移之类的工作。 AI生成的文章也在泛滥…甚至已经到了觉得打两个错别字,写点病句,用几个大小写不规范的名词,才有活人感,这样的地步。 因此也很长一段时间没有写博客,主要感觉没什么好分享的。 不过想来,真的没什么好分…
阅读全文
02最近有一个项目重度依赖飞书的思维导图,大概是这样的一个东西: 好处是协作方便,自定义 style 直观快捷;坏处是与纯文本八字不合。 虽然能导出 pdf,但层级关系完全丧失了。 能理解为什么不使用 mermaid 之类的标准格式…但在这个 AI 时代,这样的东西真的很难发给 AI。 用截图的话,小一点的图还好,大图就完全乏力了。而该项目几个月来产生的思维导图恰恰是那种超大型的。 于是想着是否可以通过逆向的方式,提取出纯文本。目标是包含层级关系,最好输出为 markdown、yaml 或者 json 等易读的格式。 获取 block 文件 因为网页端是直接通过 canvas 渲染的,所以从 DOM 里什么也看不出来。 问了问 AI 才…
阅读全文
03使用谷歌的新模型 Nano Banana,将动漫转真人是一大玩法。 但经常遇到某些 CG 图,无论怎么写提示词都没法很好的转成真人 cosplay 图片的情况。 https://linux.do/t/topic/915893 这篇文章提到,需要尤其强调真实感,不断叠甲。但对于某些图片,这种方法也不太管用。要么就是还是输出动漫风格的图片,要么就是有很浓的 3D 效果。 最近自己研究出了一种新的思路,似乎挺有效的。 简而言之就是将步骤拆分: 提取角色,生成背景为绿幕的真人 cos 照 提取场景,生成铅笔绘制的分镜稿 将两张图片合并,并附加一些提示词辅助 三个步骤所使用的 prompt 分别是: 1 2 3 Generate a real…
阅读全文
04引言 最近需要更新一台老机器的 PHP 版本,目标是从 PHP 7.4 到 PHP 8.2。说是老机器,也确实年代久远,系统甚至还是 Ubuntu 20.04。 当时的 LNMP 一整套是使用 Oneinstack 安装的,彼时还是一个非常不错的开源产品…近年发生了什么事大家也都知道了,也就是Oneinstack 投毒事件。 于是更新的话…自然不能用 Oneinstack 的升级脚本了。但由于是老系统,apt 安装多少也有些困难,因此就干脆决定用 Docker 部署吧。 Oneinstack 一整套安装的东西是高度客制化的,路径也是非标准的。比如 php 和 php-fpm 包括其配置文件在/usr/local/php下,采用 un…
阅读全文
05需求 经常会有这样的需求,需要根据具体参数的不同调用不同的处理函数。 比如根据 URL 的不同,调用不同的路由 handler;根据 command 的不同,调用不同的处理 handler。 这些需求基本都可以抽象为一件事:把 function 放在 HashMap 里。 如果是异步编程的话,那么就是把 async function 放在 HashMap 里了。 这件事在 Rust 中做起来,要比想象中困难。 今天就来浅谈一下这个主题。 框架 我们希望设计一个路由器结构体,里面放一个 HashMap。 HashMap 以 String 为 key,具体的处理函数为 value。 在初始化的时候把处理函数按不同的 key 放到 Has…
阅读全文
06Cloudflare Workers 全面支持 Rust,其原理是使用 wasm_bindgen,先将 Rust 代码编译成 wasm,然后再在 CF 的环境中运行。 由于 wasm 环境本身是单线程的,因此我们平常用的 tokio,以及其中的许多工具方法(比如 spawn)等都不能用了。 如果直接在 Cloudflare Workers 中使用 tokio 的话会报类似这样的错: Cloudflare Workers 确实是提供了 Rust 开发的文档,但文档非常简略,其中的例子虽然有涉及到异步,但基本都是简单的在 async 函数中调用 await 这样的操作。并没有介绍用什么方法能做到类似 tokio 中那样,同时 spawn…
阅读全文
07如果手上有 /64 这种整段 IPv6 的 KVM 虚拟机的话,可以玩一下用这种方式开小鸡。 这篇之前的博文介绍了 Proxmox VE 配置 IPv6 的情况,其实原理都是一样的。不过这里操作的是 Ubuntu,主要用 netplan。 Incus/LXD 是另一个虚拟机管理平台,对比 Proxmox VE 的优点是可以在任意 Linux 系统上安装,且不需要更换内核,也更节省资源。缺点是功能不如 PVE 多。关于 Incus 的安装和 Web UI 的使用可以去网上搜搜教程。 Incus 是 LXD 的一个社区版 Fork,两者没什么大的区别。但由于 LXD 改用了 Canonical 的许可证,且需要 snap 安装,所以一般…
阅读全文
08证书详解 TLS 证书大家并不陌生,每天上网我们都在访问 HTTPS 网站,所以说实际上每天都在接触也不为过。不少朋友可能自建过网站,也曾经使用过 acme 之类的工具申请过 Let’s Encrypt 的证书,为网站部署 HTTPS。但有关 TLS 证书里面的概念实在太多了,证书、证书秘钥、CSR 等不同的种类,以及 P12、DER、PEM 等不同的格式,大家肯定多多少少听说过也使用过,但恐怕很少有人真正系统地了解过。 最近翻到了一篇文章,从头到尾把有关证书的所有概念系统地阐释了一遍,语言也简单易懂,非常推荐阅读。如果你还对证书这东西一知半解的话,现在是时候学起来了! 文章链接:Everything you should know…
阅读全文
09正文 最近接到一个需求是写爬虫去获取一个医疗相关的网站上的文章。 结构首先是一个疾病分科,然后每个分科下有一些文章列表。文章列表点进去是具体的文章。我们的目标是爬取每个分科下的所有文章。 首先用浏览器控制台抓包,发现所有的请求都是基于 ajax 的。我们在下面的表示中将展示请求 URL、请求 Body 和响应 Body,分别用两个换行符隔开。 其中获取疾病分科列表的请求很简单: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 POST http://222.174.2…
阅读全文
10大家知道正则表达式^是用来匹配行首,$是用来匹配行尾。如果是多行全局的情况,就会分别匹配每一行。比如一个匹配 QQ 邮箱的正则^\d+@qq\.com$,用 regex101 测试的结果: 而在 Go 里面如果要启用多行匹配一般是这样写: 1 re := regexp.MustCompile(`(?m)^\d+@qq\.com$`) 这里的(?m)就是多行匹配的意思。 全局匹配在其他语言中是一般会用 g 表示,而在 Go 中应该调用带 All 的方法,比如 FindAllString。 但是 Go 的多行全局匹配时其实对换行符有要求,不会匹配 CRLF(\r\n,Windows 中的换行)和 CR(\r,macOS 中的换行)的,只…
阅读全文
11日常中可能经常会使用到与同步或文件复制有关的命令,针对不同的场合分为很多种情况,比如复制文件到文件夹、复制文件夹到文件夹、复制文件夹里的内容到文件夹等。如果是文件夹的话可能需要考虑需不需要加斜杠,例如名为 dest 的文件夹是写成dest/还是dest好。而实际上不同的工具或软件对于加不加斜杠的处理大有不同。 以如下的场景为例: 1 2 3 4 5 6 . ├── dest_folder │ └── dest_content.txt └── src_folder ├── src_content1.txt └── src_content2.txt 注意下文的每一次运行命令,默认都是在如上的文件结构上运行的。 对于如同command /…
阅读全文
12自己在桌面平台上使用火狐浏览器大概已经超过十年了吧,从 XP 时代开始,Win7、Win8 一路走来,中间还用过一段时间的黑苹果,再到现在的 Win10。操作系统不知道重装和升级了多少遍,电脑里也一直装有 Chrome、Edge 等浏览器备用,但一直以来主力浏览器一直都是 Firefox。 要说支持 Firefox 的原因,除了支持开源、防止谷歌一家独大这个公认理由之外,还源自习惯于火狐的插件生态和高度可定制化能力。在谷歌宣布 Chrome 要抛弃 Manifest V2,强推 Manifest V3 的当下,一众广告屏蔽插件怨声载道,而如 Firefox 这样的一个声明会始终支持 Manifest V2 的浏览器便显得尤其难能可贵…
阅读全文
13键盘语言 vs. 输入法 首先需要区分一下键盘语言和输入法的概念。对于 Windows 而言,一个键盘语言可以包括多个输入法。比如我们一般会使用的简体中文键盘就包括微软输入法、搜狗输入法等: 而英文键盘就是基础的「所按即所得」输入法,或者通俗理解成没有字形输入法。每种输入法都有自己适用的键盘语言,比如不能把搜狗输入法装在英文或繁体中文的键盘下,只能用于简体中文键盘(繁体中文键盘下一般只有注音输入法)。 对于简体中文用户来说,习惯上一般配置一种或两种键盘。以下是这两种配置习惯的区别: 配置一个简体中文键盘:简体中文键盘 + 简体中文输入法(搜狗等)。这时候默认一开机就是中文输入法,如果需要输入英文可以按键盘上的 Shift 键来切换。…
阅读全文
14最近弄了一台资源比较充沛的服务器,提供一个 IPv4 地址和/64 子网的 IPv6 地址,所以就装个 Proxmox VE 来开小鸡玩玩。在配置的过程中学到了很多新知识,这里特此记录一下。 安装 Proxmox VE 是一个类似 VMware ESXi 的软件,用于服务器上的虚拟机管理,和 ESXi 一样提供 Web 面板。但与之不同的是,Proxmox 是开源软件,并且基于 Debian 技术栈,因此可定制程度更高。可以直接安装官方提供的 ISO 镜像,也可以先安装 Debian 系统后再根据官方教程安装软件本体。 配置网卡 安装完之后就是进行网络配置了。我参考了这个一键脚本的网络配置,如下: 1 2 3 4 5 6 7 8 9…
阅读全文
15先承认,写这个标题多少有点营销号那味,因为代码里多几个换行就超过三行代码了,而且也不一定能完美绕过所有防火墙及其以后的种种升级版本。但我还是想小小的骄傲一下,本文介绍的方法应该是目前市面上用起来最简单的,并且兼容性最好的(大概)。 解决什么问题 Cloudflare 的五秒盾大家应该都很熟悉,对于网站主来说,使用它可以有效防止 CC 攻击;对于爬虫来说,解决它也算是一个重要的课题。而对于既当网站主又当爬虫开发者的我来说,就只能对其又爱又恨了…… 要说到爬虫绕过防火墙的其中一个常见方法,应该得属修改 User-Agent。你用 Python、Go 等写的程序,发起 HTTP 请求时,如果不去额外指定,都有自己的 User-Agent。…
阅读全文
16不讲武德的软件们 咱们国家的人最喜欢自己给自己创造困难,就比如墙这个东西,普通人可能感觉不太大,但对于开发者来说问题就大了。这几十年来诞生了不知道多少工具来解决各种围绕墙的难题,而几乎所有奇思妙想、奇技淫巧都是国内首创的(在这方面咱们国人可谓领先世界)。为啥?因为有需求才有市场,国外人家根本不会遇到这种难题,当然就不需要解决这些难题的工具了。 比如开发中一个很常见的场景,使用 Docker 拉镜像的时候,就需要出墙。从 docker.io 上拉镜像还好,虽然 Dockerhub 主域名被墙了,但 docker.io 这个存储镜像的域名却逃过一劫,就是在某些情况下速度极慢。不过倒是可以用国内镜像站解决大部分问题。但倘若要从 ghcr.…
阅读全文
17New Bing 与 Sydney SydneyQt是我在开始重度使用 New Bing 作为生产力工具不久后启动的项目,旨在作为 New Bing 的一个第三方客户端,提供越狱功能,并支持导入 pdf、docx 等文档,快速发送,工作区等各种 GPT 图形化界面普遍会支持的常用功能。之所以叫做 Sydney,当然越狱功能是核心亮点了。 Sydney 这个名字源于在 New Bing 开放测试后不久,有一位推特上的老哥通过 prompt injection 的方式让 AI 吐出了前面的一大段用于限制 AI 行为的 prompt(新闻链接)。在其 prompt 中,微软把 New Bing 称作 Sydney,但要求 AI 将所谓的…
阅读全文
18背景 由于写某个项目的需要,设计了一套基于 Gin 的微服务框架。 框架基于原先Gin Hybrid的代码上进行修改,增加了 etcd 作为服务注册中心、配置中心和发现中心,以及使用 JSON API 进行微服务间通信的功能。 现在 Go 圈子中没有一套像 Spring 一样大一统的微服务框架,但也有不少优秀的解决方案,例如国内的go-zero、国外的Go Micro以及 B 站开源的Kratos等等。 但这些框架都略微复杂,具有一定学习成本。例如 go-zero 使用自研的模板生成工具,用起来感觉很奇怪。另外在 go-zero 的架构中,service 层实现具体的逻辑暴露 gRPC 接口,controller 层暴露 JSON…
阅读全文
19postgresql 被称为「最现代的关系型数据库」,其支持倒排索引,可用于全文检索。在数据量不大的情况下,即使不使用 elasticsearch 也能达到不错的性能。 postgresql 默认的分词器以空格分词,不支持中文。为使其支持中文,可参考以下两篇文章的做法,安装和应用 zhparser: https://www.cnblogs.com/zhenbianshu/p/7795247.html https://www.cnblogs.com/Amos-Turing/p/14174614.html 其中添加分词配置的代码为: 1 2 CREATE TEXT SEARCH CONFIGURATION parser_name (PA…
阅读全文
20引子 自从 New Bing 推出之后,使用它的频率便是越来越频繁,尤其是在平时开发工作中让它写代码片段,工作效率之提升不可谓小。“谈天吉皮提”之威力我算是领教到了。 New Bing 不对中国大陆之用户开放,最开始许多人的解决方案是改请求头 X-Forwarded-For,但近期这个方法不能用了。虽然这对于一直挂代理的我没什么影响就是了。但最近 New Bing 又开始对代理下手,封禁了一大堆 IDC 的 IP,我的梯子也惨遭毒手。 v2ex 之相关帖子:https://www.v2ex.com/t/926788 谷歌之后看到有些文章通过继续修改 X-Forwarded-For 头的方法解决,将原先的 8.8.8.8 改为 1.1…
阅读全文
21背景 在现实生产环境中,我们常常需要在同一网站中提供两种服务:一种是针对客户端的 REST API,另一种是基于服务器端的 Go Template 服务端模板渲染。这两种服务有不同的使用场景,因此需要同时支持。但是,由于 SEO 等方面的考虑,我们也不能完全使用单页面应用(SPA)的架构,而必须采用服务端渲染。 这个问题在实际生产中很普遍。比如,在一个电商网站中,我们需要提供给客户端一个接口用于获取商品列表,同时也需要在服务端渲染出页面,让搜索引擎能够索引网站内容并提高 SEO 效果。但是如果 REST API 和 Go Template 服务端模板渲染调用的是不同的后端服务,就会存在数据不一致、接口定义不统一等问题,同时也造成了重…
阅读全文
22由于数据分析的需要,计划抓取「青桔骑行」共享单车手机 App 的单车和停车点位置信息。 抓包 青桔骑行 App 中有一个「附近单车和停车点」的功能,使用 Burp 抓包如下: 尝试删除多余的 HTTP Header 部分,最终判断以下数据是关键: 一是请求 query string 部分: 1 /gateway?api=hm.fa.homeBikeRelated&apiVersion=1.0.0&appKey=fab20e5de8824a3fb238dd5491e05097&appVersion=3.6.12&lang=zh-CN&mobileType=2112123AG&osType…
阅读全文
23近期对拷贝漫画(copymanga)进行数据分析,发现网页端获取漫画章节使用 JavaScript API 异步请求数据,相关请求代码经过混淆、返回数据经过加密。因此进行逆向分析。 示例网址:https://copymanga.site/comic/nizaonanlema 抓包 首先,查看网页源代码发现漫画简介等元数据在 HTML 代码中,而如上图所示的章节列表则没有。抓包分析,发现漫画章节应该是这个 URL 返回的: https://copymanga.site/comicdetail/nizaonanlema/chapters 直接访问,很明显 results 是数据,经过加密。 抓包发现另一处 js 请求: https://…
阅读全文
24背景 由于组织内部服务器只有内网可以访问,一直以来使用 nps 连到自己在国内的一台小鸡上做内网穿透,转发 ssh、web 等服务。但近期由于组织内防火墙的缘故,大量 frp、nps 的反代遭到封杀,服务器被以判断 IP 并直接丢包的方式封锁。nps 采用 web 图形化界面,增删改查主机和穿透隧道十分便捷,在客户端上也只需要一句命令就能直接运行,但恐怕特征明显,组织内部的小防火墙也能轻松识别。 于是尝试使用 v2ray 作为媒介,vmess+https+websocket 的配置作为底层传输方式代理 nps 流量。能轻松应对 GFW 的协议,想必应对野鸡防火墙完全手到擒来。 鉴于使用 v2ray 可能产生的断线问题,本文末尾介绍了…
阅读全文
25高德的官方文档质量实在太差了,同一个地方方法名大小写都不一样。 在 JS API v2 的升级指南中提到LngLat的大小写变更: 但实际上在 v1 的 SDK 中就已经改变大小写了,如果按照 v1 的文档调用会报错is not a function 。 相关链接: https://lbs.amap.com/api/javascript-api/guide/transform/coord_trans https://lbs.amap.com/api/jsapi-v2/update 对国内环境比较友好的地图,相比之下,高德应该算是勉强能用的了。iOS 中国部分的地图用的也是高德的底图。但奈何不住文档实在太烂,开发起来也十分费劲。 如果…
阅读全文
26从一张梗图开始 起源于在 TG 某个频道看到的一张图: 图下面的评价是:Nginx is so hard! 实际上这张图描述的是 nginx location 的路径配置,及 location 代码块中 proxy_pass 的路径关系,属于 nginx 应用中路径转发的知识。例如图中 Case 1 对应的代码块应该为: 1 2 3 location /test1 { proxy_pass http://127.0.0.1:8080; } 其中 127.0.0.1:8080 是运行的一个后端服务。 例如域名为example.com,那么我在域名后加上 Test URL:example.com/test1/abc/test,那么我的后…
阅读全文
27据消息: Google 提供免费公共证书服务 该功能处于内测阶段,Google 公告 (https://cloud.google.com/blog/products/identity-security/automate-public-certificate-lifecycle-management-via--acme-client-api) 说证书管理器预览版的增强功能现在可以用于 Google Cloud 客户网络负载均衡器的 TLS 终止或者跨云和内部部署的工作负载。 证书服务的特性如下(V2EX ZeroClover 提供) 免费,且仅支持 ACME 协议进行申请 和 Let’s Encrypt 一样支持多域名和泛域名 支持…
阅读全文
28一般来说,一副稍微用点心的标准文章题图由至少由几个部分组成:背景图、前置元素及文字(例如本文的题图)。 最近想到一个点子,用与文章背景题图配色相似的动漫角色作为一个前置元素附上,可能可以给题图增加一点生气。 这个问题实际上也就是寻找配色最相近的两张图片,或者计算两张图片配色上的相似度。需要与之区分的是“寻找相似图像”,前者单论配色,与主题色的相似度及出现的范围大小有关;而后者则把图像中的具体细节,如物体形状、颜色各自出现的位置等因素也考虑在内,更加严格。实际上经过调研,寻找相似图像已经有许多成熟的算法,包括 aHash、dHash、pHash 等。但不适用于这次的需求。 1. 首先从某个 TG 频道下载一定数量的动漫图像作为原材料,…
阅读全文
29这是最近开发闪卡项目遇到的问题。不同卡片虽然宽高一样,但里面的内容即字数有所不同。对于文字数量小的卡片而言,需要字体大小为一个合适的值;而对于文字数量大的卡片则需要将字体调小,在不溢出容器的前提下尽可能大。 模块代码片段:(gist 地址:https://gist.github.com/juzeon/35c47d738e658fe837734d8b42538bf2) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 由于程序本身用到…
阅读全文
30我的联想小新 15 笔记本在拔掉电源时会有一种诡异的亮度调节机制,经过网上查阅,与这条知乎问题所属情况相符: 这个功能我感觉非常奇怪,因为它不是靠传感器感应外界光线调节亮度而是依据屏幕显示的内容。它会在屏幕颜色浅的时候调亮屏幕,在颜色深的时候调暗屏幕,这样看电影什么的碰到暗的画面它还调暗,结果整个屏幕就变成了一坨浆糊,亮的时候又亮的刺眼。这到底是什么逻辑啊。。。?而且顺便问一下这个功能好像不受 windows 设置里这个功能开关的限制。。每次我因为各种原因触发了这个功能除了重启两次(没错两次)之外都没办法关掉它。有什么办法能彻底干掉它吗? 最后找到问题解决方案。 先打开这个 UWP 软件: 如果没有,可前往 Microsoft St…
阅读全文
31这段时间完成了一个繁体 - 简体线上转换的小项目,采用 react+express 前后端分离开发。顺便学习了一下 google cloud build 和 docker 的相关应用。踩了些坑,在这里记录下。 GitHub Demo 前端代码 前端使用 create-react-app 开发,采用 axios 请求后端的接口。 前端请求后端需要制定一个 BASE_URL,由于最后是封装进 docker 镜像中,而一般来讲 create-react-app 由于使用 webpack 打包,BASE_URL 需要在编译时就指定,不适合 docker 这种模式。所以这里需要一个能取到运行时环境变量的方法。 我采用的方法是前端加入一个con…
阅读全文
32今天早上收到 vultr 发来的邮件,说由于被 DDOS 攻击,VPS 被空路由了。该 VPS 上架设了我的另一个服务,需要快速恢复访问。vultr 最长的空路由时间是 24 小时,无法等待那么久。于是想通过快照新建机器的方式快速恢复。 首先在 vultr 后台打开 VPS,新建 snapshot: vultr 的快照目前是无限量 + 完全免费的。 建议在建立快照的时候将服务器 stop 掉。 等待快照建立完成,然后新建机器,在 server type 当中选择刚刚建立的快照,用相同或更高配置恢复: 恢复完成后,会发现虽然提示 VPS 为 Running,但实际并不能连上。这是由于建立快照的时候原先的服务器处于空路由状态,vultr…
阅读全文
33开源地址:https://github.com/juzeon/dd-signal 自建机器人:@dd_signal_bot 这是一个新的 Telegram 机器人! 之前写的新周刊 TG 订阅频道居然已经有 50 个订阅者了,好高兴! 这个项目是我为了学习 nodejs 练手写的,有发到 v2ex 上,几个小时也已经十几个 star 啦。能帮助到有同样需求的人,还是很有成就感的。 Bot 的用途在标题中已经概括了,你也可以直接点进开源项目的主页看看详情。 顺便想吐槽一下,有些依赖驱动的模块,比如这次用到的 better-sqlite3,在 nodejs 上面用 npm 安装是需要自己编译二进制文件的。 对于 better-sqlit…
阅读全文
34昨天用异步请求修改了我的fast-mail-bomber这个项目的 update-nodes 模块,在这里记录一下踩坑过程。 需求: 需要能够发送异步请求,并且控制一个并发数量。 在一个请求发送后需要用到这个请求返回的内容,才能发送下一个请求 类似场景:异步获取指定的一个图像 URL 列表的图片内容,并把每一张图片都上传到另一个图床上。 需要用到的环境:PHP 7.2 以上版本+Guzzle v7,Guzzle v6 的 async 系列函数有问题,有时候会莫名其妙地输出 responseBody,好坑啊。 这里就用 httpbin.org 来做演示。 首先创建 guzzle 对象: 1 $guzzle=new \GuzzleHtt…
阅读全文
35Telegram 的频道原以为是只能通过客户端访问,或者经由 RSSHub 调用的,但发现其实是可以直接用 HTTP 协议调用的。于是就有了这个 API,访问 Telegram 频道 https://t.me/MikuArt 获取图片 URL 后,上传到今日头条的图床,把地址导入 sqlite 数据库文件,再进行后续调用。 之前在网络上也看见过很多类似的 API,都有些缺点: 不开源,服务稳定性未知 图片较少,很多基本不再更新 不对我胃口 所以就自己写了一个,由于调用的是 Telegram 地址,并且可以自行部署,服务稳定性有保障。另外 Telegram 频道@MikuArt 这个频道存在时间很长了,每天都维持着一个很高的更新频率。…
阅读全文
36频道地址:https://t.me/neweekly 欢迎订阅 高中时期的语文老师特别喜欢看这本杂志。好几次去她办公室她都会把看过的杂志送给我们,有时候一给就是一袋子。纸质版的图很多,很有奢侈地挥霍空间的感觉,咋一看跟那种很水的娱乐杂志没什么区别。但其实里面的很多文章都挺有深度的,包括手机 APP 里的也是,所以后来就喜欢上了。只不过 APP 本身做的巨烂,网页版又阉割地几乎就没有内容。因为经常用 Telegram,于是就想把这个搞成一个频道,和InstantView结合起来,这样就可以直接在 TG 上看,完全不用开其他应用。 本来是想用RSSHub配上现成的 rss to instantview 机器人,结果 rsshub 根本就…
阅读全文
37前段时间开了个新坑,Fast Mail Bomber 邮件轰炸机的 PHP 版本(GitHub、博客文章)。发现有很多朋友想用但是不懂得跑 PHP 啊。。这里干脆写篇新手向的文章稍微再详细一点地说明一下吧。 本文面向 Windows 用户,采用的是最简化的步骤和配置。如果你并非对程序一窍不通,请直接关闭本文。 1. 安装 PHP 打开 PHP 官方下载适合 Windows 版本的 PHP 可执行包,这里推荐下载 PHP 7。 网址:https://windows.php.net/download/ 然后将下载到的文件解压,确保解压的路径中没有中文: 记录下解压的路径。这个目录里应该有一个php.exe,比如我这里就是"D:\Down…
阅读全文
38免责声明:仅供学术研究使用。对于违反相关法律、造成危害的滥用行为,开发者不负任何责任。 前言 来源于我五六年前的一个项目:【居正】垃圾邮件轰炸机。 最开始只是挂在网站上玩玩,然后就好几年都没管它了。最近一年来发现总有人以「邮件轰炸机」的验证消息加我 QQ 好友,还问怎么卖之类的。我感到很疑惑,我这个小破站什么时候盈利过了。。 后来在谷歌上一搜,直接震惊了。只要以「邮件轰炸」之类的关键词搜索,我这个小网页居然基本都是排第一名的。谷歌后台的数据也是如此: 这个小网页实现的原理,主要是内置一些 GET 就能调用的 mailman 接口,在执行时用 document.write 写 iframe,给目标邮箱发送 subscribe 的确认邮…
阅读全文
39当我们做以下业务的时候,可能会需要大量代理 IP: HTTP CC/DDOS网站 爬虫,突破反爬 基于 IP 判断用户的投票系统,刷票 玩 pixelcanvas 类型的像素画网站,用 IP 判断不同用户的 …… 互联网上免费代理 IP 的网站很多,自建代理 IP 池的方法也很多。比如下面这个项目: constverum/ProxyBroker 包括国内也有一些类似的项目。 但这些方式都有缺点,比如代理 IP 稳定性不可靠,需要后期二次手动校验;国外代理国内访问有困难;匿名性没有很好的保证等等。 今天介绍一种我摸索出来的方法,利用 v2ray+Tor 自建代理 IP 池。你需要有一台自己的 VPS。 1. 在 VPS 上安装 Tor…
阅读全文
402014 年 12 月 14 日,54df 论坛的 RUI_wj 找到我,想和我一起开个博客,于是这个站点就这么诞生了。一直到现在换成 Hugo 系统前,博客系统一直用的是 Z-Blog PHP 版。和许多朋友隔三差五地换博客系统不同,我的博客系统除了今年初 RUI_wj 进行的一次重装升级,就完全没换过。一方面是自己懒得折腾,更重要的是折腾了也没人看啊 hhhh。 我最后一次在这个博客上发文章,应该是 2017 年 4 月 1 号的这篇:【工具】将多说导出的评论转换为 WP 格式的 sql 以便于导入 wordpress。从这天起一直到昨天为止,博客属于完全咕咕咕的状态。(之后我会将自己这四年写的一些笔记日期调成相应的记笔记的日期…
阅读全文
41「Hello World」,这是我们学习任何一门编程语言会写的第一句代码。互联网的大门后是一个人类文明几千年未曾有过的「异世界」,这个世界很奇妙,我们希望对它说声「你好」。 你好,欢迎来访我博客「Terrarum::异世界」,我是居正。juzeon、ajz都是我的英文 ID。我喜欢搞技术,目前的技术栈是 Vue + Go/Node.js/PHP。喜欢动画「彩虹小马」和其他ACGN方面的东西,欢迎来找我玩。 邮箱:master@skyju.cc Github: @juzeon 淀粉月刊:https://dfkan.com/author/juzheng EquestriaCN: https://www.equestriacn.com/a…
阅读全文
42======更新======= 联系了站长,站长已经修复了漏洞。 ======原文======= 开始渗透是晚上 11 点,写这篇文章的时候是晚上 12 点吧。精力充沛(不) 整个渗透过程我都会像写小说一样写(x 但是真实性可以保证 qwq) 晚上拿手机翻到了这个网站,之前也有耳闻(似乎挺出名)。然后看到了他的下单系统,里面有个查看所有订单,随手加了个单引号—— 然后就谜一样的全出来了: 同时,我在下单的页面也发现了 get 类型 sql 注入漏洞: 现在有这种漏洞的网站不多了,于是赶紧开电脑。 对了别忘了信息采集! 是 oneinstack 搭建的环境,phpmyadmin 暴露无遗。 把刚才那个注入点丢到…
阅读全文
45这个问题困扰我几乎一年了。今天终于得到了解决! 淀粉月刊用的是Wordpress程序,采用Beginning主题。 有时候访问月刊的某些包含文章 list 的页面,比如 topic、page、tag 这些,会出现长时间无法加载出来的情况,最后服务器返回 504(Timeout,请求时间过长)。通常表现为第一页第二页没问题,到了第三页就有问题,第四页又没问题了。 淀粉月刊创立几个月后开始出现这种问题,我以为是部分文章的编码啊什么和主题或者什么插件不兼容,也没去仔细思考解决,就简单地把某个 list 页面的文章一个个用WP Hide Post插件在首页隐藏,找到出问题的文章,全局隐藏掉(或者写的太渣的直接扔掉)。 最近这个问题越来越频繁…
阅读全文
46我们学校的教务系统用的是这样一个 CMS: 这里有 SQL 注入,直接输入'or 1=1--就可以进入 进去后是这样,有个公文列表;发布公文处可以上传附件;同时发现设置里面可以上传改图片: 经过尝试,设置里面的上传会自动重命名,不能传 shell;公文列表里面上传的附件会调用一个 download 程序下载,不知道真实路径没法直接访问;然后发现浏览公文的地方有 SQL 数字型注入: 在这里还获得疑似物理路径,留着备用 伴随 cookie,放到 sqlmap 里面,是 sa 权限,返回 os-shell。whoami发现是 system 权限。所以我先加了个叫 mssql2 的管理员用户备用 通过百度知道了解 cmd 下输出一句话需要…
阅读全文
47由于多说评论要关了,又有很多朋友 wordpress 博客用的是多说评论(包括淀粉月刊)。我就写了这个小程序方便把多说的数据迁移到 wordpress。 项目地址:https://github.com/juzeon/duoshuo2wordpress
阅读全文
48【提醒】此文是一篇新手向的渗透文章,其中一些片段在大牛看来会觉得很可笑,还请谅解。 在我买搬瓦工 VPS 之前,用了一年多某 IDC 的便宜虚拟主机。今天,我展开了对此 IDC 的渗透测试。毕竟得出师有名,为什么要搞它呢?因为这 IDC 居然用免费空间的配置拿来当收费主机卖,还一天到晚宕机,甚至在一次搬迁中出现了数据丢失,对我的影响比较大。 在此 IDC 的“有问必答”界面,我找到了一个上传突破口,用户可以在这里上传问题的描述图像。将图片一句话用 burp 抓包,截断,上传之。不知上传是否成功,我发现它居然是用一个专门的构造器显示图片!那么就无法直接访问图片马了。我又尝试使用 iis 短文件扫描,但由于网站是 IIS7.5 的,遂亦…
阅读全文
49本人渗透小白,文笔也欠缺,有些地方大牛们可能会觉得很可笑,请谅解~~ 【过程】 帮吧友搞一个网站,蜘蛛爬到了一个“办公系统”,如图: 看到没有验证码的登录窗口,第一反应是测试万能密码,测试宽字节注入,未果。放到 burp 里用弱口令字典爆破。 好长时间过去,没有什么结果。突然注意到地址栏,结尾是.action,脑子里马上想到 struts2 的漏洞。怀着侥幸的心理把网址放到工具里检测。 (截图是搞完之后截的) 哈哈哈,检测显示有这个漏洞,那么就好办了。马上执行了 whoami 看看权限。 居然是 root 权限!!管理员太不注意安全了吧。 经过测试我发现在/office/目录下,由于没有登录,输入任意地址都会直接跳转到登录页面,反正…
阅读全文
50(如果觉得图片太小了看不见可以去 imgur 看大图:http://imgur.com/a/upi3t) 大家还记得 2014 年我发布的“居正免费静态空间”吗?时隔两个春秋,2016 年,它以崭新的面貌欢迎大家的光临! 看到这唯美的后台,大家是不是很惊艳呢?哈哈,与原来屎一样的绿色对比,新后台的科技韵味十足呢~给大家放一张原来的照片: (现在看来真辣眼睛。。。。) 旧 版的特点是把所有的操作做成 input 框,然后要用户自己去输入文件夹和文件的名字才能操作…..现在的新后台只需要在“操作”一栏里面点击要进行的 操作即可。而且删除、警告标志啥的我也特意把语言搞的风趣幽默一点儿,是不是很享受呢~(某淀粉:要是能带上妹子的照片就好了;…
阅读全文