1

我有一个刚刚开始失败的 wordpress 博客的 curl 脚本。我收到一条错误消息,提示必须启用 cookie 才能登录。下面是登录代码。

$post_str = 'log=USERNAME&pwd=PASSWORD&redirect_to=https://sub.wordspress.com/wp-admin/&testcookie=1&wp-submit=Log%20In';
$cookie = tempnam ("/tmp", "CURLCOOKIE");
$url = "https://domain.com/wp-login.php";
$ch = curl_init();
curl_setopt ($ch, CURLOPT_URL, $url);
curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt ($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6");
curl_setopt ($ch, CURLOPT_TIMEOUT, 60);
curl_setopt ($ch, CURLOPT_COOKIEJAR, $cookie);
curl_setopt ($ch, CURLOPT_REFERER, 'https://sub.wordpress.com/wp-admin/');
curl_setopt ($ch, CURLOPT_POST, 1);
curl_setopt ($ch, CURLOPT_POSTFIELDS, $post_str);
curl_setopt($ch, CURLOPT_COOKIESESSION, true);
curl_exec ($ch);
curl_close($ch);

饼干文件:

# Netscape HTTP Cookie File
# http://curl.haxx.se/rfc/cookie_spec.html
# This file was generated by libcurl! Edit at your own risk.

.wordpress.com  TRUE    /   FALSE   0   wordpress_test_cookie   WP+Cookie+check

有任何想法吗?

4

1 回答 1

2

好吧,也许我现在有答案了。

我停止工作的(bash)脚本看起来不像你的。

这是我最初的,在 8/23 之后不再工作:

# Set some default file names...
COOKIES="$FILEPATH/cookies.txt"

# set up login data
POSTDATA="log=${USERNAME}&pwd=${PASSWORD}"
POSTDATA="${POSTDATA}&rememberme=forever&submit=Log%20In"
POSTDATA="${POSTDATA}&redirect_to=http://wordpress.com/&testcookie=1"

#first get test cookie
curl --silent --cookie-jar "${COOKIES}" --output /dev/null "${LOGIN_URL}"

# now log in
curl --silent \
    --cookie-jar "${COOKIES}" \
    --output /dev/null \
    --max-redirs 0 \
    --data "${POSTDATA}" \
    "${LOGIN_URL}"

修复它所需要的只是cookie在第二个 curl 调用中添加参数,如下所示:

curl --silent \
    --cookie "${COOKIES}" \
    --cookie-jar "${COOKIES}" \
    --output /dev/null \
    --max-redirs 0 \
    --data "${POSTDATA}" \
    "${LOGIN_URL}"

不确定 100% 在你的脚本上下文中是什么样子,但可能会添加这样的一行:

curl_setopt ($ch, CURLOPT_COOKIE, $cookie);

会做吗?

于 2013-09-13T14:02:47.283 回答