3

我试图在 shell 中发出一个 post 请求来调用 wordpress 安装,但 wordpress 只是告诉我“你必须提供一个电子邮件地址”。这是我所拥有的:

curl -X POST -A "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:12.0) Gecko/20100101 Firefox/12.0" -e "http://dev.example.com/yeshello/wp-admin/install.php?step=2" -H "Content-Type:application/x-www-form-urlencoded" -H "Accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8" -H "Accept-Encoding:gzip, deflate" --data "?step=2&weblog_title=yeshello&user_name=admin&admin_password=admin&admin_password2=admin&admin_email=mathias%40example.com&Submit=Install+WordPress" http://dev.example.com/yeshello/wp-admin/install.php

我设法让它在一个名为 Postman 的 Chrome 插件中工作,这是我在那里设置的:

标头

用户代理:Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:12.0) Gecko/20100101 Firefox/12.0 参考: http ://dev.feed.no/yeshello/wp-admin/install.php?step= 2 Content-Type: application/x-www-form-urlencoded Accept: text/html,application/xhtml+xml,application/xml;q=0.9, / ;q=0.8 Accept-Encoding: gzip, deflate

生的

这是原始数据,插件有一个字段支持

step=2&weblog_title=yeshello&user_name=admin&admin_password=admin&admin_password2=admin&admin_email=mathias%40feed.no&Submit=Install+WordPress

网址

最后有一个 url 字段

http://dev.example.com/yeshello/wp-admin/install.php?step=2&weblog_title=yeshello&user_name=admin&admin_password=admin&admin_password2=admin&admin_email=mathias@feed.no&Submit=Install+WordPress

4

2 回答 2

3

当我编写 URL 标题时,我尝试在 curl 命令中使用整个 url,如下所示:

curl -X POST -A "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:12.0) Gecko/20100101 Firefox/12.0" -e "http://dev.example.com/yeshello/wp-admin/install.php?step=2" -H "Content-Type:application/x-www-form-urlencoded" -H "Accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8" -H "Accept-Encoding:gzip, deflate" --data "?step=2&weblog_title=yeshello&user_name=admin&admin_password=admin&admin_password2=admin&admin_email=mathias%40example.com&Submit=Install+WordPress" http://dev.example.com/yeshello/wp-admin/install.php?step=2&weblog_title=yeshello&user_name=admin&admin_password=admin&admin_password2=admin&admin_email=mathias@example.com&Submit=Install+WordPress

它奏效了 :) 但我很生气,为什么不发布这个呢。希望它可以帮助某人!如果有人想澄清为什么必须这样做,我很想听听。

于 2012-12-18T15:33:17.920 回答
1

这是原始答案的简化版本。谢谢你的努力,它有帮助。 curl --data-urlencode "weblog_title=MY_BLOG_NAME" \ --data-urlencode "user_name=MYUSERNAME" \ --data-urlencode "admin_password=MYPASSWORD" \ --data-urlencode "admin_password2=MYPASSWORD" \ --data-urlencode "admin_email=MY@EMAIL.COM" \ --data-urlencode "Submit=Install+WordPress" \ http://wordpress_host/path_if_any/wp-admin/install.php?step=2 这是我能想到的最简化的。我看不出有任何理由更改用户代理字符串、设置引荐来源网址并在 POST 和 GET 数据中包含所有参数。使用--data和/或时,Curl 设置正确的内容标题--data-urlencode

有趣的部分实际上是它step=2应该是一个 GET 变量,而其他一切都需要是 POST 数据。

于 2015-02-06T15:27:04.500 回答