22 KiB
广谈大湾网:下载、导入排版、人工发布与换号
本文中的帐号名称和用户编号已匿名化;真实记录保存在本地排除目录中。
记录日期:2026-10-31(北京时间)。本文依据用户指导、Chrome 实际操作和现有源码检查编写。它是后续实现的流程依据;需求不等于功能已经实现。
1. 不可改变的边界
- “发表帖子”只能由用户亲手点击。 自动化只下载、选择、上传、填写、排版、校验、提示审核、观察提交结果和记录计数。禁止模拟点击发布、调用提交函数、直接发送发帖请求或通过快捷键提交。
- 标题被截断、正文或来源被修改后,都必须重新进入人工审核。发生标题过长错误后,“重新尝试发表”也由用户再次点击。
- 用户决定分区和文章根目录;“理财财经”只是本次例子,不能成为所有文章的固定分区。
- 全流程页面常驻“终止流程”按钮。点击后立即取消后续动作、重试、队列领取和自动换号,不自动恢复。已经到达网站的请求不能撤回,需保留记录并核对。
- 已发表或已被网站接收待审核的文章不能再次排入发布队列,换账号也不能绕过去重。
2. 本次演示记录
| 项目 | 结果 |
|---|---|
| 站点 | https://www.dww11.com/ |
| 当前账号 | 示例用户,页面用户编号 <已匿名> |
| 分区 | 理财财经,fid=125 |
| 入口 | 首页右上角“免费发布信息”→ 分区页“理财财经” |
| 分区页 | https://www.dww11.com/special/post/ |
| 新帖页 | https://www.dww11.com/forum.php?mod=post&action=newthread&fid=125 |
| 标签行为 | 点击分区后新开标签,原分区页保留 |
| 测试标题 | 刚靠新电影赚23亿票房,周星驰就卖掉内地影院 |
| 原标题长度 | 22 个 Unicode 码点;本篇无需截断。网站计数方式尚未实测 |
| 目录 | <项目根目录>/tanshuapi_news_downloader/downloads/刚靠新电影赚23亿票房,周星驰就卖掉内地影院 |
| 目录内容 | 1 个 Markdown + 26 张 JPG,共 27 个文件 |
| 来源 | 洲洲影视娱评(取文章末尾来源,不取正文“信息来源”截图) |
| 导入 | 已完成;面板提示“已填写标题、正文和 26 张配图” |
| 排版 | 已完成,正文 4 号黑色,尾注 1 号银色 |
| 核对 | 编辑器 DOM 中图片 26 张,最终来源尾注仅 1 条 |
| 发布 | 用户已亲手点击;网站已受理,详情页显示“审核中” |
| 帖子链接 | https://www.dww11.com/thread/23697411.html |
| 帖子标识 | 主题 ID 23697411;首帖 PID 238766 |
| 数量 | 已明确受理 1 篇;已确认审核通过并公开 0 篇 |
| 发布后图片 | 正文 21 张 + 附件区 5 张,共 26 张 |
| 换号 | 未执行;本次未设置最小值和最大值 |
本次页面没有“终止流程”按钮。用户明确同意本次演示暂用浏览器控制条停止,常驻页面按钮仍是后续自动化的必备条件。该例外只适用于本次演示。
本次已验证导入、排版、用户亲手发表以及网站受理后的帖子详情页;页面明确显示“审核中”。尚未验证审核通过后的访客可见性、标题超限错误或换号链路。用户称发表后自动回首页,但本次实际读取的原编辑器标签已导航至帖子详情页,不能将“提交后必然自动回首页”写成网站行为。应在结果登记后主动回首页并核对。
3. 用户操作步骤与自动化对应
- 启动前让用户选择分区、下载目录、待处理文章范围,并填写每个账号发布数量的最小值和最大值。展示当前账号。先初始化常驻终止按钮与持久任务记录。
- 从下载器接收完整落盘的文章目录。检查正文、图片引用、来源和去重记录;保存中或缺文件的目录不进入导入队列。
- 点击“免费发布信息”,展示实际可用分区,由用户选择。等待新标签打开并核对分区名称及 fid;不能继续操作旧标签或仅凭坐标判断。
- 在右下角“本地文章导入 · 1.0”选择“选择文章目录”。日常演示选择单篇目录,目录应包含 Markdown 和全部配图;不要只选
.md。如果选择根目录导致出现多个 Markdown,必须明确选中哪一篇。 - 在系统文件选择器进入用户指定根目录,再选择对应文章文件夹。系统“Upload”是把所选文件提供给页面读取,不是发表帖子;浏览器另有目录文件数量确认。
- 阅读导入面板标题、正文预览、图片数量和告警。点击“上传配图并填写”后才开始向网站上传正文引用的图片。等待明确完成提示,不能用固定等待时间代替完成判断。
- 读取文章最后的标准尾注
来源:名称,如有侵权,请联系删除。,只取名称。本篇是“洲洲影视娱评”;用户先前茅台文章例子是“酒业内参”,不能硬编码。 - 点击编辑工具栏绿色“一键排版”(不是网站自带“自动排版”,也不是“一键导入微信公众号并排版”)。实际弹窗要求输入来源公众号名称,并非标题。本篇填“洲洲影视娱评”,确认后会提示排版完成。
- 标题由本地导入器填入页面标题框;仍需核对完整标题。当前“一键排版”不弹标题输入框。如果用户说“输入标题”,应在标题框填写和确认,而不是填到来源弹窗。
- 校验标题、正文、图片数量和顺序、尾注唯一性、账号和分区。保留用户原文;本篇的发布时间、“打开网易新闻 查看精彩图片”等原始文字未擅自清理。需要清理时应成为用户可见的规则。
- 页面提示“已完成,等待人工审核,请自行点击发表帖子”。自动化停止修改编辑器,保留终止按钮,等待用户操作;不自动保存草稿或发表。网站原有自动保存仍可能运行。
- 用户自行点击“发表帖子”。自动化只观察结果。若标题超长,按第 5 节修正,重新提示审核,等待用户再次点击。
- 收集帖子链接/编号、作者、分区和结果证据后记账。审核中单独记录并阻止重发;结果不明时先核对,不能自动重试发布。
- 已明确成功后先持久保存发布记录与计数,再回到首页。达到当前账号目标篇数且没有未决提交时,点击页面顶部“登陆下一帐号”,核对登录成功后再处理下一篇。
4. 页面适配依据与当前缺口
以下选择器来自本次可见页面或本地源码,未来运行时须重新检查,不能保证网站改版后仍成立。
| 控件 | 当前依据 | 注意事项 |
|---|---|---|
| 当前用户 | #mumucms_username |
同时读取页面用户名与用户链接编号 |
| 下一账号 | #dww11-extension-next |
完成记录后才允许换号;核对成功,不以按钮点击作为成功 |
| 标题 | #subject |
本次读取到 maxLength=-1,不能只依赖 HTML maxlength |
| 可视化正文 | iframe#e_iframe 内的 body |
图文与尾注检查应在 iframe 内进行 |
| 纯文本开关 | #e_switchercheck |
不将 Markdown 直接当网站 BBCode |
| 一键排版 | #dww11-format-oneclick |
原生 prompt 输入来源,随后 alert 提示完成 |
| 发表 | #postsubmit |
仅用于识别状态和观察人工提交,禁止自动触发 |
| 导入面板 | 油猴脚本面板,包含 choose/import 等控件 | 面板可能位于 Shadow DOM;普通页面选择器未必能定位,优先按可见控件操作 |
本次实际遇到的兼容问题:
- 浏览器连接器直接设置目录文件被“允许访问文件网址”权限阻止。本次没有更改扩展权限,改用 Chrome 原生系统选择器完成。后续实现应优先复用本地文章包接口,减少对文件对话框的依赖。
- macOS 路径含中文,逐键输入曾丢失中文;通过文本框完整赋值成功定位。输入后必须核对完整路径,不能只看末级数字或英文。
- 导入器能完成 26 张图片上传,并临时禁用发表按钮;上传完成后恢复。上传过程中不允许换号。
- 来源重复: 一键排版保留了导入正文中的原尾注,又追加银色尾注。本次在编辑器中删除原来的那一条,保留银色尾注,复查最终只出现一次。后续应在排版适配器中精确处理末尾标准尾注,不能全局删除正文中的“来源”。
- 页面“还可输入 80 个字符”在导入后仍显示 80,不能将这个显示值当作可靠的标题长度校验结果。
- 页面有“上次未提交成功的数据”恢复提示;本次没有点击恢复,避免把旧稿混入新稿。后续遇到已有正文或恢复冲突必须暂停处理。
5. 标题超过 80 字符
保留 original_title,派生 submitted_title。超过站点限制时截取前缀并追加字面量 ...,总长不超过 80;即长度允许时保留前 77 个字符再加 3 个点。示例中的“标题文本...”表示实际标题前缀和省略号,不额外加入中文括号。
当前站点的“字符”计数方式尚未通过超长标题实测。实现时兼容中文和 emoji,不能切断代理对;先按保守规则校验,再根据站点明确错误调整。若站点按字节计数,则按其实际字节预算截取,不能反复盲目减少。
现有导入器在读取阶段对超过 80 个 Unicode 码点的标题直接报错。后续需把截断放在导入前,否则到不了人工审核阶段。截断不覆盖原 Markdown 标题,也不改变文章去重身份。
如果用户点击发表后才收到标题超限提示:确认网站明确未接受 → 修正标题 → 显示新旧标题 → 重新人工审核 → 用户再次点击。任何自动修正都不等于用户已批准发表。
6. 发布记录、去重与恢复
建议独立 SQLite 发布任务库,与下载去重库分开;下载成功不能视为发布成功。本次先保存演示任务 JSON,尚未实现自动数据库或网站历史帖子同步。
稳定文章身份优先采用下载器原始文章 ID 或规范化源 URL,同时保存正文与图片内容指纹用于发现重新下载/改名副本。禁止只按本地目录名、截断标题或当前账号去重。默认整个站点跨账号、跨版块不重复发表同一篇;如以后需要重发,必须由用户显式决定。
建议字段:article_key、source_url/source_id、content_hash、原始/最终标题、目录、来源、状态、账号 UID、fid、附件映射、排版版本、人工提交时间、提交尝试编号、帖子 ID/URL、网站受理/审核/公开状态、错误、创建和更新时间。日志不保存密码、Cookie 或上传凭证。
主状态:
downloaded → queued → importing → formatting → awaiting_user_review
→ user_submitting → published / accepted_pending_moderation
分支:stopped、needs_attention、submit_unknown、rejected。未决提交不得重新上传或领取同一文章。单批次串行,跨标签领取加持久锁;刷新后先恢复状态,不自动启动。
去重记录需要覆盖用户已发表帖子:优先导入原有记录,或从“修改/删除信息”进入本人帖子列表进行核对。仅标题相同只能标记疑似重复,不能据此自动认定是同一正文。本次未扫描历史帖子,后续批量运行前必须完成历史对账;本次文章已记为“网站已受理、审核中”,已有帖子 ID 与 URL,必须阻止重发;不能误写为等待用户点击,也不能写为审核通过。
成功记录与计数使用同一个事务:帖子唯一键(站点+帖子 ID)防止页面刷新重复加一。先记录再返回首页。遇到网络超时、页面关闭或不明确提示,记录 submit_unknown,人工/页面核对后再决定,禁止自动重复发表。
网站明确受理待审核时,记 accepted_pending_moderation 并锁住文章。本规范建议把明确受理计入账号本轮提交数量一次,另存公开发表数量;后续审核通过只改变公开状态,不再加本轮数量。本次已观察到网站审核中状态,因此本地记录明确受理数为 1、已确认公开数为 0;批量自动记账尚未实现。驳回不自动补发或重投。
7. 每个账号随机篇数与换号
用户填写整数 min、max,要求 1 ≤ min ≤ max。首次为当前账号创建发布批次及每次确认换号成功后,从闭区间 [min,max] 均匀抽取整数 n,保存目标和当前计数。min=max 时固定该数量。不要按每篇重新抽 n,刷新、暂停或重启也不重抽。
- 本轮计数只含当前发布批次明确成功/明确受理的唯一文章,不含上传、排版、等待人工审核、失败和结果不明。
- 达到 n 后先保存记录与
switch_pending,回首页,核对没有待提交草稿,再点击“登陆下一帐号”。 - 观察并确认实际 UID/用户名变化且登录成功,再建立下一账号批次、重置批次计数并抽新 n。不可在不确定结果时重复点击换号。
- 验证码、账号异常、频率限制、登录失败或账号池无可用账号时暂停,保留当前文章与计数;不把受限文章换账号重投。
- 用户手动改变账号时立即暂停,重新关联批次与上传附件;不能沿用旧账号附件上下文。
- 队列已经处理完时直接结束,不为“凑满 n”重复文章,也不无意义换号。
本次没有给定 min/max,所以不随机设置目标,也不执行换号。账号扩展现有自己的抽号/登录持久记录,应复用其登录流程,不另存账号密码。
8. 常驻终止按钮的实现要求
按钮在首页、分区页、新帖页、结果页、换号页面保持可见,不依赖折叠的导入面板。跨标签共享同一批次停止状态,导航后先恢复按钮和停止状态再执行任务。
点击立即写入持久 stopped 并提升运行版本号,取消定时器、队列和可取消的上传/下载请求;每个异步步骤返回时检查停止标志和版本,过期回调不得再填写、跳转或换号。浏览器自带模态弹窗会阻挡网页按钮,因此自动流程应把来源/审核提示改成页面内面板,保留停止入口。
已被服务器接收的图片/帖子不能被停止按钮撤回。停止后允许被动记录已在途请求的最终结果,但不得继续业务动作;需要清楚显示“已停止,已发出的请求可能仍已完成”。人工终止后必须由用户明确重新启动,不能因刷新或服务重启自动恢复。
9. 后续实现与验收清单
- 优先实现常驻终止按钮、持久队列、站点级去重和历史发布对账,再接批量导入。
- 改造导入前标题截断、唯一来源尾注和可重复执行排版;保留原文与本地文件。
- 建立本地任务服务与浏览器执行器之间的配对通信,只传当前文章所需数据,不传下载 API Key 或账号库。
- 人工发布边界验收:没有用户点击时,等待任意时间都不会发表;标题修正后仍等待新的用户点击。
- 验证缺图、上传部分失败、重复来源、长标题、emoji、多 Markdown、非空编辑器、人工修改、刷新/断网、多标签竞争。
- 用户实际发布后,补录成功页或审核中页面证据、帖子 URL/ID,并验证重复打开不会增加计数。
- 给定 min/max 后验证 n 范围、每账号仅抽一次、达到目标换号、核对新 UID、恢复不丢计数。
- 在下载、上传、排版、等待审核、观察结果和换号各阶段点击终止,确认不再触发后续动作。
10. 当前交接
用户已亲手点击发表。原编辑器标签现为帖子详情页,标题与作者“示例用户”一致,面包屑为理财财经,显示“审核中”。已保存主题 ID、首帖 PID、URL、受理数量与去重记录,禁止再次发同一文章。登记后已点击网站首页入口,并核对 URL 为 https://www.dww11.com/,当前账号仍为示例用户(UID <已匿名>);没有设置 min/max,因此未换号。
发布结果检查发现正文内有 21 张图片,另外 5 张在附件区:image009.jpg、image014.jpg、image016.jpg、image025.jpg、image026.jpg,总数 26 张;来源尾注仅一条。发布后的正文与初次待审稿存在差异(例如原发布时间及“打开网易新闻 查看精彩图片”文字已不在结果正文中)。本次未记录用户审核期间的具体编辑动作,无法将差异归因于用户修改、编辑器同步或网站转换;后续需在用户点击的时刻保存最终待提交快照,再与结果对照。不得自动编辑或重发这篇已受理的帖子。
截图:test/history/周星驰文章_待人工审核.jpg(历史待审稿)、test/history/周星驰文章_网站审核中.jpg(网站受理结果)。演示任务:test/history/演示任务记录.json;站点级去重登记:发布去重记录.json。记录保存本次结果,不代表完整历史同步或批量程序已经实现。
11. 发布结果判断与本次补录
- 用户点击后,不按“回到首页”判断成功;先记录实际跳转 URL 和页面结果。
- 本次 URL 为
/thread/23697411.html,页面标题、理财财经面包屑、楼主示例用户及“审核中”共同确认网站已受理。DOM 首帖容器为#postmessage_238766。 - 网站审核中并非失败,不能为追求公开状态而再次提交;也不能仅凭当前登录用户能看到详情,宣称所有访客可见。
- 刷新、重复读取或后来审核通过时,都用站点+主题 ID 保证受理数量只计一次。
- 本次没有出现标题超限,相关处理仍是待验证需求。
- 完整历史对账、常驻终止按钮、随机数量和自动换号仍属后续实现及验收范围。
12. 2026-10-31:实际提交与审核中页面观察
本节补录一次新的现场操作,与第 2、10、11 节的历史演示分别记录。用户本次明确要求由助手点击“发表帖子”并捕捉快速跳转提示;助手仅点击一次,未修改待发表标题或正文、未重新上传、未重复提交。本次授权仅适用于这一次现场操作,不改变工作台默认等待用户亲手发表的规则。
提交与结果
| 项目 | 观察结果 |
|---|---|
| 页面显示的发表时间 | 2026-10-31 17:02:54(北京时间,来自结果页时间节点) |
| 文章标题 | 湖人只有一个卢卡·开拓者的四大金刚 |
| 当前账号与作者 | 示例用户,UID <已匿名>;真实账号信息保存在本地观察记录中 |
| 目标版块 | 体育休闲,fid=90 |
| 提交前页面 | https://www.dww11.com/forum.php?mod=post&action=newthread&fid=90 |
| 提交后提示页 | forum.php?mod=post&action=newthread&fid=90&extra=&topicsubmit=yes |
| 网站原文提示 | 新主题需要审核,您的帖子通过审核后才能显示 |
| 提示页跳转链接 | https://www.dww11.com/thread/23699911.html |
| 实际跳转 | 提示页 → 帖子详情页;本次未观察到自动回首页 |
| 详情页状态 | 标题旁明确显示“(审核中)” |
| 实际主题参数 | 页面“复制链接”及相邻主题链接使用 tid=236999 |
| 首帖标识 | PID 238791;正文容器为 #postmessage_238791 |
| 受理结论 | 本次已明确受理 1 篇;本次已确认公开 0 篇 |
| 后续动作 | 未再次发表、未换号;未据此补写运行队列、受理计数或发布去重库 |
页面适配依据
| 数据 | 现场依据 | 适配注意事项 |
|---|---|---|
| 提交提示 | 可访问性树中的 messagetext 容器及其提示文字、跳转链接 |
已捕捉文字与链接,但跳转前未成功保存该容器 HTML;结果选择器仍需验证 |
| 帖子标题 | #thread_subject,位于 h1.ts 内 |
与最终提交标题核对,不能只用浏览器页签标题 |
| 审核状态 | 标题所在 td.plc.mumucms_ftit.vwthd 内的 span.xg1 包含“(审核中)” |
限定标题区域,避免把正文中出现的同名文字当作状态 |
| 主题标识 | 标题区域“复制链接”的 mod=viewthread&tid=236999 |
地址路径为 23699911.html,不能直接将全部数字解析为实际主题 ID |
| 首帖与作者 | #postmessage_238791;现场作者链接含 mod=space&uid=<已匿名> |
动态提取 PID、UID,并限定首帖作者区域;页面顶部登录账号不能单独证明作者身份 |
| 目标版块 | 现场版块链接含 mod=forumdisplay&fid=90 |
与任务版块核对,不只匹配“体育休闲”文字 |
网站已受理待审核,不能将该篇重新入队或为追求公开状态再次提交。本次没有验证审核通过后的访客可见性、失败提示、超长标题错误、自动记账和换号链路;看到登录态详情页不代表已公开。
本地资料保存在排除目录 local-records/:publish-result-23699911.json 保存观察摘要、标题区域 HTML 与作者/版块链接,publish-result-23699911.png 保存标题旁“审核中”的截图。文件名沿用访问地址的数字串,不代表实际 tid。本节是文档补录,不等于运行去重库已登记;后续对账需关联原文章身份,并统一主题标识的处理方式。
13. 0.2.0 实现与历史补核
已实现审核中详情适配:限定标题区域审核标志,结合真实 TID、首帖楼主标识、作者 UID、版块 fid 与最终提交标题核对。受理、去重和批次计数在同一事务登记;图文检查与受理状态分开,图片延迟占位、附件区或文字/顺序差异会保留受理去重并暂停。记账后仍运行时返回首页,再领取或换号;停止后仅允许被动记账。
现场只读核对了现有页面结构,没有点击发表、上传、改文或换号。当前模板面包屑容器为 .mumucms_pt,首帖作者位于 #post_<PID> 的 .plc .pti .authi,首帖楼主链接为 #postnum<PID>;图片同时可能具有 id=aimg_<AID> 与 aid=<AID>。static/image/common/none.gif 是占位图,不能凭 naturalWidth 大于零宣称原图已显示。
已将第 12 节现场记录关联队列既有人工提交快照:TID 236999、PID 238791,记为受理待审核,阻止重发;历史补核没有增加当前批次计数。图文完整性保留待核对标记,流程暂停。任务库和原去重记录均先备份再更新,不改写原文章。
公开成功页仍无样本,审核标记缺失不能作为已公开证据。标题超限拒绝分支已做模拟测试,尚无实机错误样本;其余未知提示进入待核对。完整线上连续发布与真实账号换号仍需由用户亲手发表的小批验收。