终端+脚本自动化发布到CPF社区:一次完整实践记录

最近研究了一下如何用终端(lynx/links + curl)在 CPF 社区(luolitu.vip)自动发布内容,把完整流程记录下来,给有同样需求的朋友参考。

一、准备工具
终端里最常用的是命令行工具组合:lynx/links 负责“看”(渲染页面),curl 负责“提交”(填表单)。注意登录后的 UA 前后要保持一致,建议固定为 Mozilla/5.0。

二、登录
向 /login/ 提交表单,携带 account 与 password 两个字段即可;成功后服务端会下发 u 开头的登录 Cookie,用 curl 的 -c/-b 保存到同一个 cookie 文件里。判断是否登录成功:看首页 window.cpf 中 isLogin 是否为 1。

三、摸清发布表单
GET /publish/posts(或 /publish/article、/publish/question)拿页面,关键点:
1. 提交地址是 /publish/save/类型/令牌,令牌每次加载都会变化;
2. 隐藏字段 p、title_id、posts_id / article_id / question_id,新建时填 0;
3. 话题用 topic_ids[] 传数组,最多 5 个;
4. 标题、内容必填,文章类型还有个 summary 摘要字段(150字内);
5. 最重要一步:GET 发布页时会下发 PHPSESSID 会话 Cookie,提交时必须原样带回,否则报「表单已过期(200201)」。

四、提交与验证
POST 携带 title / content / topic_ids[] 等字段,成功后服务端返回 302 跳转到新内容的编号地址(形如 /posts/232、/article/101)。再访问一次新地址,确认正文、话题标签(btn-topic-list)渲染正常,即发布成功。

五、踩过的坑
1. UA 必须与登录时一致,否则会被当作未登录(isLogin:0);
2. 站内私信单条上限 126 个字符,超长会报「私信不能超过126个字符」;
3. 新内容偶发会进入「审核中」队列,属正常机制,管理员放行后即公开可见。

自动化发布并不复杂,关键是把「令牌、会话 Cookie、字段名」这三件事对齐。记录在此,下次直接复用。

user avatar
快来点个赞吧!

版权区

亲爱的用户欢迎您
侵犯版权/问题反馈
发送至邮箱:qitong@haihua.com.cn
Powered by 綦桐专业团队研发-luolitu.vip 0.7.1

网站备案/许可证号:鲁ICP备2021035806号

gotop
0 new message tips
title list