分类 PHP 下的文章

你可能已经发现我的Mastodon上刷了一大串帖子,这正是刚才测试文章同步造成的。

同步使用了项目:FediverseSyncForTypecho 原始仓库为:jkjoy——FediverseSyncForTypecho
原仓库不支持使用代理完成网络请求,使得该插件在某些Mastodon站点被GFW屏蔽的情况下完全无法使用。
我的仓库把Release版本号刷到了1.6.5 主要增加了对http和socks5代理的支持。也是顺便测试借助DeepSeek 彻彻底底Vibe Coding了一回,确实很方便,花小钱办大事,比自己慢慢扣效率高太多了。

本次Vibe Coding使用Visual Studio Code搭配DeepSeek V4 for Copilot Chat

这个项目我自从看到GS在用就注意到了,当时就下载测试发现不支持代理试图自己添加代理支持(简单写死的)可惜学艺不精没一直扣完,太简陋不想公开最终拖到了今天。
我已经尽自己所能的审查了AI生成的代码,但是为了避免Vibe Coding可能潜在的混乱和污染问题,这个仓库的更新我不会推送到原始仓库,就让本项目作为我的个人试验品好了

具体更新如下:

Fediverse Sync for Typecho - 更新日志

版本 1.6.5 (2026-06-18)

新增功能

  • SOCKS5/HTTP 代理支持

    • 新增可选代理配置,支持 HTTP 和 SOCKS5 两种代理类型
    • SOCKS5 使用远端 DNS 解析(CURLPROXY_SOCKS5_HOSTNAME),避免 DNS 污染
    • 支持代理认证(用户名/密码)
    • 适用于中国大陆等网络受限环境

重构优化

  • HTTP 请求统一重构

    • 将分散在 Plugin.php、Action.php、Api/Sync.php 中的 6 处原始 cURL 调用集中到 Utils/Http.php
    • 新增 postForm() 方法,统一处理 Mastodon/GoToSocial 的表单编码 POST 请求
    • Header 去重处理,避免重复 header 导致 400 错误
    • 代理逻辑由 Utils/Proxy.php 集中管理,一处配置全局生效

调试改进

  • 增强 HTTP 层错误日志

    • 请求失败时自动记录 URL、HTTP 状态码、cURL 错误号和错误描述、响应体预览
    • Proxy 应用代理时记录代理类型和地址,便于确认代理是否生效

文件结构

FediverseSync/
├── Utils/
│   ├── Proxy.php           # 增强:支持 SOCKS5+HTTP 代理类型选择
│   └── Http.php            # 增强:新增 postForm() + 代理集成 + 日志增强
└── Plugin.php              # 新增5个代理配置项

今天下午从下班开始陆续收到某不知SEO站点广告机器人发送的七八条垃圾评论,令我感到极度恶心。遂搜索评论验证插件,最终决定使用CaptchaPlus
该插件支持 hCaptcha 和Turnstile,看网友评论效果不错。
今天开始试装,如无法发送评论请通过mastodon或matrix联系我,链接在关于页面。

我真的很高兴Typecho社区在过去数年长期停止发布正式更新之后依然保持着极高的活跃度,原开发者也腾出手来加入了开发进程,现在一切正在步入正轨。

安全方面

1.这个更新修复了多个XSS漏洞。(包括我之前遇到的评论者信息框的mail和URL的两个XXS以及后台的一个XXS)

其他主要惊喜总结

1.对PHP8的更多支持
2.添加admin/footer.php开始插件的支持
详见:Release v1.2.1

以前也有很多无聊的小鬼喜欢对着我的站点舞弄他胯下的那根牙签,最无聊的那些还在我的站点日志里刷针对thinkphp或者/backup.zip之类搞笑的请求,难得有个比较务实一些所以记录下来。
相关的漏洞,稍微限制下字符串长度就能临时缓解,不过我的博客数据是自动备份的,丢不了所以懒得搭理这些无聊的小鬼。各位看戏就行。

- 阅读剩余部分 -

前言:我使用的主题是基于默认主题修改的,主体样式并没有太多变更,主要是增添需要的内容。这个功能算是刚需,之前用VOID的时候习惯了,后来自己改默认主题没把这个加进去,这次补上。

添加到index.php的合适位置即可,注意官方主题使用ul标签,你应该把li标签里的内容放在ul块里。

<li>
<?php if($this->user->hasLogin()):?>
<a href="<?php $this->options->adminUrl(); ?>write-post.php?cid=<?php echo $this->cid;?>" target="_blank">编辑</a>
<?php endif;?>
</li>

isset() 函数用于检测变量是否已设置并且非 NULL。

isset ( mixed $var [, mixed $... ] )

如果一次传入多个参数,那么 isset() 只有在全部参数都被设置时返回 TRUE,计算过程从左至右,中途遇到没有设置的变量时就会立即停止。

返回值bool

如果指定变量存在且不为 NULL,则返回 TRUE,否则返回 FALSE。

get_headers — 取得服务器响应一个 HTTP 请求所发送的所有标头.

说明

get_headers(string $url, int $format = 0): array

参数

url :目标 URL。
format :如果将可选的 format 参数设为 1,则 get_headers() 会解析相应的信息并设定数组的键名。
(相当于得到多个有序排列的,被命名,赋值好的变量作为元素组成的数组。)

返回值

返回包含有服务器响应一个 HTTP 请求所发送标头的索引或关联数组,如果失败则返回 false。