0

首先,我使用 codeigniter 并使用 PhilSurgeon codeigniter-curl:http ://philsturgeon.co.uk/code/codeigniter-curl

我正在尝试 curl 并从另一个域的响应标头中获取 Set-Cookies。代码如下

$url = 'http://ib.adnxs.com/ptv?id=1403122&size=1x1';

$this->curl->create($url);
$this->curl->http_header('User-Agent', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_8');

$options = array(CURLOPT_HEADER => 1);
$this->curl->options($options);
$vast= $this->curl->execute();

echo "<pre>"; print_r($vast);

返回这个:

Set-Cookie: sess=1; path=/; expires=Fri, 24-May-2013 01:58:10 GMT; domain=.adnxs.com; HttpOnly
Set-Cookie: icu=ChIItcsCEAoYASABKAEwsu_1jAUQsu_1jAUYAA..; path=/; expires=Wed, 21-Aug-2013 01:58:10 GMT; domain=.adnxs.com; HttpOnly
Content-Type: text/xml
Set-Cookie: anj=Kfu=8fG1aPCxrx)0s]#%2LcYUiWd4r$[-T_g+2'ti*zYQaYhJGno9P8*w:M5Uy0Hg2:=*oU[fy9; path=/; expires=Wed, 21-Aug-2013 01:58:10 GMT; domain=.adnxs.com; HttpOnly

但是从这个使用 firebug 的url你会看到有 4 个 Set-Cookies 标头响应

Set-Cookie:icu=ChIItcsCEAoYBSAFKAUwhND1jAUQhND1jAUYBA..; path=/; expires=Wed, 21-Aug-2013 00:51:16 GMT; domain=.adnxs.com; HttpOnly
Set-Cookie:anj=Kfu=8fG1aPDYS3+0s]#%2LcYUiWd4r$[-T_g+2'thuA$jWEA)yIwtO#ou!><v1GC]*h)%B*hFeR*i`dzw@x-0CY_hN>8<=/=PpF>B2sEM:U9)Egw$gpK<rU3V2sTQBPSK2CBFmAZ4fxWRa/zdHI[^``z>tsw['ZH`CLcww-vV^ufhcR)XmgkjKre#dUU5QfVO.L4fG9GFBu=<jK(f6singv3mi%6gt$7LnUry9e#5x9U`r72%WaCxZpz7-]WIMUV)VDDCc<SUs06To>Gz$A>!A#UF?AH^u[Op<V1s>I#n[aDEPs:sNe8^J#UA<zF-Jik).@gDsrSxfhcQju>xP$yFLD=::tzzS/UTdX!C/=v7)6Fp'>c:%:rUn#/mTw`N#7U9(rwFXkmv^qM'0_QMX_jew(sDj(>a@s0XLV(Y%hCGZ`WDyVH>**Uy08b!:1hy:3!?k; path=/; expires=Wed, 21-Aug-2013 00:51:16 GMT; domain=.adnxs.com; HttpOnly
Set-Cookie:uuid2=3617392369395966810; path=/; expires=Wed, 21-Aug-2013 00:51:16 GMT; domain=.adnxs.com; HttpOnly
Set-Cookie:sess=1; path=/; expires=Fri, 24-May-2013 00:51:16 GMT; domain=.adnxs.com; HttpOnly

我错过了最重要的 cookie,即 Set-Cookie:uuid2。我的代码在我如何卷曲 url 上是否有问题,或者我可能缺少一些 curl 参数?

4

2 回答 2

0

CURLOPT_HEADER 发送所有标头,因此它将发送所有 cookie。如果您使用 curl 获得的标题/cookie 集与使用浏览器不同,那么这确实是因为您获得了不同的集!

cookie 集不同的原因可能有多种,但最常见的原因只是服务器以某种方式认为您的 curl 请求与浏览器请求不同,因此在这种情况下它会发送回一组不同的 cookie。您通常可以通过使您的 HTTP 请求更类似于浏览器请求来解决该问题,从而使服务器更难发现差异。

于 2013-05-23T10:37:52.923 回答
-1

看起来服务器需要授权。所有浏览器的请求(包括使用 Firebug 发出的请求)都使用设置了授权标志的会话。但是您的脚本未经授权(因为它使用另一个会话),因此您没有任何uuid2价值。

于 2013-05-23T11:05:33.767 回答