我正在尝试通过 Python 脚本向我的 MyBB 服务器发布帖子,但无论我怎么尝试,它都无法正常工作。请求显示在取证日志中,标题在变量中$_SERVER
,但$_POST
始终是一个空数组。错误日志中没有显示任何内容,即使在调试级别也是如此。我已经尝试搜索,但没有找到任何有用的信息。我已经检查了 post_max_size 的内容,它是 8M。
另一个因素是,只有我自己的请求没有通过。浏览器生成的请求似乎运行良好。我找了又找,但我找不到任何不同之处,而这些不同之处应该很重要。
无论如何,这是一个示例请求。
POST /newreply.php?tid=1&processed=1 HTTP/1.1
Host: <redacted>
Accept-Encoding: identity
Content-Length: 1153
Content-Type: multipart/form-data; boundary=-->0xa216654L
Cookie: sid=<redacted>; mybb[lastvisit]=1354995469; mybb[lastactive]=1354995500; mybb[threadread]=a%3A1%3A%7Bi%3A1%3Bi%3A1354995469%3B%7D; mybb[forumread]=a%3A1%3A%7Bi%3A2%3Bi%3A1354995469%3B%7D; loginattempts=1; mybbuser=2_ZlVVfaYS9FstZGQzr4KiNRUm3Z4xAgJkTPPq2ouFcuaragOTVQ
Accept: text/html
User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:14.0) Gecko/20100101 Firefox/14.0.1
-->0xa216654L
Content-Disposition: form-data; name="my_post_key"
257b2bbef4334000d9088169154900a3
-->0xa216654L
Content-Disposition: form-data; name="quoted_ids"
-->0xa216654L
Content-Disposition: form-data; name="tid"
1
-->0xa216654L
Content-Disposition: form-data; name="message"
foo!2
-->0xa216654L
Content-Disposition: form-data; name="attachmentact"
-->0xa216654L
Content-Disposition: form-data; name="attachmentaid"
-->0xa216654L
Content-Disposition: form-data; name="icon"
-1
-->0xa216654L
Content-Disposition: form-data; name="posthash"
e93a2c78ce3f6807a86fd475ef4178cf
-->0xa216654L
Content-Disposition: form-data; name="postoptions[subscriptionmethod]"
-->0xa216654L
Content-Disposition: form-data; name="replyto"
-->0xa216654L
Content-Disposition: form-data; name="message_new"
foo!2
-->0xa216654L
Content-Disposition: form-data; name="submit"
Post Reply
-->0xa216654L
Content-Disposition: form-data; name="attachment"; filename=""
Content-Type: application/octet-stream
-->0xa216654L
Content-Disposition: form-data; name="action"
do_newreply
-->0xa216654L
Content-Disposition: form-data; name="subject"
Lol
-->0xa216654L
答案1
我找到了问题所在。您需要在边界标记前面添加两个破折号,Content-Type 标头中的实例除外。此外,您还需要在最终边界后添加两个破折号。有趣的是,我读过的文章中从未提到过这一点。