【发布时间】:2015-06-24 07:29:46
【问题描述】:
我正在尝试向需要登录的网页发出请求。 我成功获取了带有 SESSID 的 cookie,并使用 curl 将其写入文件:
$username = 'xxx';
$password = 'xxxxxxx';
$url = 'http://example.com';
$cookie="cookie.txt";
$postdata = "username=$username&userpass=$password&autologin=1&userlogin=Login";
$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_FOLLOWLOCATION, 0);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_COOKIEJAR, $cookie);
curl_setopt ($ch, CURLOPT_REFERER, $url);
curl_setopt ($ch, CURLOPT_POSTFIELDS, $postdata);
curl_setopt ($ch, CURLOPT_POST, 1);
$result = curl_exec ($ch);
curl_close($ch);
在此之后,我想使用 cookie 向站点发出 POST 请求,以便它识别我已登录。如果您提出如下请求,它会使用返回 JSON 信息的 API:
site.com/API/command.get(x) - 只是一个例子。因此,如果您在浏览器中打开它,它会返回 JSON 数据。
任何人都可以帮助我,如何做到这一点?我是 curl 新手。
无论我尝试什么,我都会被重定向到登录页面。
试图通过curl_setopt ($ch, CURLOPT_COOKIEFILE, $cookie);,没有成功。
【问题讨论】:
-
请发布
cookie.txt中的内容 -
只是在cookie中有SESSID并不意味着你已经登录了,它只意味着服务器可以从SESSID识别你为客户端。您也必须登录。
-
您好,文件中有如下信息:# Netscape HTTP Cookie File # curl.haxx.se/rfc/cookie_spec.html # 此文件由 libcurl 生成!编辑风险自负。 site.com FALSE / FALSE 1429265797 ZBW_SESSID
-
@NikolayMegdanov 请提供来自成功登录帖子请求的帖子和标题信息的 firefox firebug 输出。
标签: php post curl cookies request