PHP Curl - Cookie 问题

Posted

技术标签:

【中文标题】PHP Curl - Cookie 问题【英文标题】:PHP Curl - Cookies problem 【发布时间】:2011-11-23 05:49:28 【问题描述】:

我正在尝试通过 cUrl 自动获取我的亚马逊员工统计信息。但是我在第一个障碍时跌倒了;登录。

当我使用以下代码时:

    $url = 'https://affiliate-program.amazon.com/gp/flex/sign-in/select.html';
    $post_data = "action=sign-in&email=$username&password=$password";

    $fp = fopen('/my/path/to/cookie.txt', 'w');
    fclose($fp);

    $login = curl_init();
    curl_setopt($login, CURLOPT_COOKIESESSION, 1);
    curl_setopt($login, CURLOPT_COOKIEJAR, '/my/path/to/cookie.txt');
    curl_setopt($login, CURLOPT_COOKIEFILE, '/my/path/to/cookie.txt');
    curl_setopt($login, CURLOPT_USERAGENT, 'Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)');
    curl_setopt($login, CURLOPT_TIMEOUT, 40);
    curl_setopt($login, CURLOPT_RETURNTRANSFER, 1);        
    curl_setopt($login, CURLOPT_URL, $url);
    curl_setopt($login, CURLOPT_HEADER, 1);        
    curl_setopt($login, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
    curl_setopt($login, CURLOPT_FOLLOWLOCATION, 1);
    curl_setopt($login, CURLOPT_POST, 1);
    curl_setopt($login, CURLOPT_POSTFIELDS, $post_data);
    echo curl_exec($login);
    curl_close($login);  

我得到以下输出:

HTTP/1.1 200 OK 日期:2011 年 9 月 22 日星期四 22:08:39 GMT 服务器:服务器 x-amz-id-1:1NNZMSS8X73EE0G7HKW8 x-amz-id-2: HRW1ZoN4KVzDCp/tS5E7l+7fn9XGH2k/T7qxzi+WLOw= 设置cookie: 会话ID时间=1317279600l;路径=/;域名=.amazon.com;过期=周四 2011 年 9 月 29 日 07:00:00 GMT Set-cookie: session-id=181-7755537-2127814; 路径=/;域名=.amazon.com; expires=2011 年 9 月 29 日星期四 07:00:00 GMT 变化: Accept-Encoding,User-Agent Cneonction: close Transfer-Encoding: 分块内容类型:文本/html; charset=UTF-8 请启用 Cookie 继续

要继续在 Amazon.com 购物,请在您的网站中启用 cookie 浏览器。详细了解 Cookie 以及如何启用它们。

在您的浏览器中启用 cookie 后,请点击 按钮返回上一页。

cookie.txt 包含以下内容:

#Netscape HTTP Cookie 文件

#http://curl.haxx.se/rfc/cookie_spec.html

# 这个文件是由 libcurl 生成的!编辑风险自负。

.amazon.com TRUE / FALSE 1317279600 session-id-time 1317279600l

.amazon.com TRUE / FALSE 1317279600 session-id 181-7755537-2127814

实时 HTTP 标头:

https://affiliate-program.amazon.com/gp/flex/sign-in/select.html

POST /gp/flex/sign-in/select.html HTTP/1.1 主机:

affiliate-program.amazon.com 用户代理:Mozilla/5.0(Windows NT 6.0;

rv:6.0) Gecko/20100101 Firefox/6.0 接受:

text/html,application/xhtml+xml,application/xml;q=0.9,/;q=0.8

接受语言:en-gb,en;q=0.5 接受编码:gzip,放气

接受字符集:ISO-8859-1,utf-8;q=0.7,*;q=0.7 连接:保持活动

推荐人:https://affiliate-program.amazon.com/Cookie:

apn-user-id=P0000000000; session-id-time=1317366000l;

session-id=182-9139891-5240049;

__utma=125759317.157031897.1316727783.1316727783.1316795373.2;

__utmz=125759317.1316727783.1.1.utmccn=(direct)|utmcsr=(direct)|utmcmd=(none);

ubid-main=190-8295480-4625243; __utmv=125759317.koicarandsup-20;

x-main=qIM@jFtaFnr4KaiFFutR7WZ1QkQHqoq9;

在-主= 4 | eaxYjMp + 5TWMiQOn6gROkHUvCfKF3Y9hkvacYbU0 + fzL3Pr1ejcGt78Tb6W5zvUYj67hWyx3AuNd3UparIBCnnrL62d5IMyn7zeFKr7GfjnPvjjaGOPArk7n7tr7go + QgBU6OZ0hKse6MJIdApDrSe2cI0Mz9XDvbumEU5twDKgq338hejMR23IXuWrvq1o0hcfN6DS0oabY7mVIddSMig ==; P>

__utmb=125759317; __utmc=125759317 内容类型:

application/x-www-form-urlencoded 内容长度:1276

sessionId=182-9139891- 5240049&路径=%2Fgp%2Fassociates%2Flogin%2Flogin.html&查询= returl%3D%2Fgp%2Fassociates%2Fjoin%2Flanding%2Fmain.html%26retquery%3D和行动=登入和模式= 1&电子邮件= XXX&密码= XXX&X = 31&y = 18&metadata1 = xppc1AIU%2Fl8IERp8RJxYooTCV9Vo2Nico9wyEvW9ByghGgc %2FSNU8XqMQnjgshs3DZpFQgLXCAT1qAama%2Bj5WBGxvTRiC45v6Am7hMY99RwJfUIozi5v1ZkwV%2Bcjp9PecvpcPSxLVuwOF4QSf7Q%2BPxNwlxLm5nHXqSNPwmw5Ezg2ENIagMWcrwuDlp50%2B0XKi0e8yyawdc5TjH%2BhGXz12KABRLoH1WuTSwAWleHzGzBUN515WgRMElB583b9h%2FoDINumjmwwsHsjzXjLaEjYaM1w6nw%2F5fqmpABPcN31D7wgDQoOi1xxIyUtZceAa3rwwUxKvpZecStM2T6QtSJhx6YdpLNmHwGSdhkBrsCQVlcLruKNMnUVrb%2FZni3le380YsUeIsVZy113lqayCwla9vwvDTA4mstx2YTKtTU1NOzfblMlYBEL4rhLN1fpeF0EaiAoiatLb1kH%2BCvt6tp78KyPCd0XeEBGqMeDWm2b%2FBSg%2BUqVLBMSeHtJ4VZXxMaWhodZZYU0uxUNwL8hCVruO5KxSbssorByNybuPx%2FmkS87UZMDB62VALgb90MUXLvbVX%2BcmizzBkmwCs3Q6ampHa40NIYQKXTCCnGjVUwavCPv73OrMA8OjVJX3h371m3OHvzpBKRTFG5uiTfZoaaPI%2FYxikE2v99%2FaR3vlwkTZfOhM%2Fba9seIbMpxArTj6ekpmTLbU5LwKn2yVbiAZgsUuFSCNcQMlE%2FJ9nAIuYZ2guks0Zz%2BPhJ07TOXuTscuc %2Fm0wgqqluPq5NShRINoiGLjiKva6ngslLoQWeKovNwYyVCyNfuwsZ7BIo6%2Fo7yaEfIK6Yb%2BZPMommN%2FI7BFrlW7wrWmaG%2FgbtSx1bg9A5DgtKBDI21j3ibebBZVN%2FP2ZrEB6upCDHEKa1pMCkP6nbOhu%2BxcrNYS%2FyS6e0bv3WiWqugclX%2FnYmBWBdNunCFtI8LKU%2FMvhDT820M%3D P>

HTTP/1.1 302 MovedTemporarily 日期:2011 年 9 月 23 日星期五 16:30:35 GMT

服务器:服务器 x-amz-id-1:1JGFY8JCATS8GCJ05WP3 x-amz-id-2:

vNYWJ+3yN1Qrya1cxENZdlFuZNF4Yc4uYhCmoR3UFBU= 设置 Cookie:

在-主= 4 | 3iPYr7E1Pn32BbMI4MHFaMtbn / 0v54qEG1Jn9Pk + 7Hi2Cws1f + jBSUt9oyBzrpy6BX1XCsZ / qoJlbswA0G2U3L9Yhec4CjSlsLZM +的MEPR / AiNAbvuUDzj9wL1HI2x + e7tBqDLhK + fas6R562qkQBX + 9Y7bhE1St11hjislFijGuTcbtr + 5mUz1FuweEFaH / xtHacsJ3Yth9iOiska0CbQ ==; P>

路径=/;域名=.amazon.com; expires=格林威治标准时间 2036 年 1 月 1 日星期二 08:00:01;

安全 Set-Cookie:ubid-main=190-8295480-4625243;路径=/;

域名=.amazon.com; expires=2036 年 1 月 1 日星期二 08:00:01 GMT 地点:

https://affiliate-program.amazon.com/gp/associates/join/landing/main.html

变化:接受编码,用户代理内容编码:gzip nnCoection:

关闭 Transfer-Encoding: chunked Content-Type: text/html;

charset=UTF-8


https://affiliate-program.amazon.com/gp/associates/join/landing/main.html

GET /gp/associates/join/landing/main.html HTTP/1.1 主机:

affiliate-program.amazon.com 用户代理:Mozilla/5.0(Windows NT 6.0;

rv:6.0) Gecko/20100101 Firefox/6.0 接受:

text/html,application/xhtml+xml,application/xml;q=0.9,/;q=0.8

接受语言:en-gb,en;q=0.5 接受编码:gzip,放气

接受字符集:ISO-8859-1,utf-8;q=0.7,*;q=0.7 连接:保持活动

推荐人:https://affiliate-program.amazon.com/Cookie:

apn-user-id=P0000000000; session-id-time=1317366000l;

session-id=182-9139891-5240049;

__utma=125759317.157031897.1316727783.1316727783.1316795373.2;

__utmz=125759317.1316727783.1.1.utmccn=(direct)|utmcsr=(direct)|utmcmd=(none);

ubid-main=190-8295480-4625243; __utmv=125759317.koicarandsup-20;

x-main=qIM@jFtaFnr4KaiFFutR7WZ1QkQHqoq9;

在-主= 4 | 3iPYr7E1Pn32BbMI4MHFaMtbn / 0v54qEG1Jn9Pk + 7Hi2Cws1f + jBSUt9oyBzrpy6BX1XCsZ / qoJlbswA0G2U3L9Yhec4CjSlsLZM +的MEPR / AiNAbvuUDzj9wL1HI2x + e7tBqDLhK + fas6R562qkQBX + 9Y7bhE1St11hjislFijGuTcbtr + 5mUz1FuweEFaH / xtHacsJ3Yth9iOiska0CbQ ==; P>

__utmb=125759317; __utmc=125759317

HTTP/1.1 302 已临时移动日期:格林威治标准时间 2011 年 9 月 23 日星期五 16:30:36

服务器:服务器 x-amz-id-1:0DVGSNJ16FJ7BZSXKZEA x-amz-id-2:

3zBVVCqaFC6uLEb69n0ImqYEWcveHC/fr3DWJZ9XwfU= 设置 Cookie:

ubid-main=190-8295480-4625243;路径=/;域名=.amazon.com; expires=周二

格林威治标准时间 2036 年 1 月 1 日 08:00:01 地点:

https://affiliate-program.amazon.com/gp/associates/network/main.html

变化:Accept-Encoding,User-Agent Content-Encoding:gzip Cneonction:

关闭 Transfer-Encoding: chunked Content-Type: text/html;

charset=UTF-8


https://affiliate-program.amazon.com/gp/associates/network/main.html

GET /gp/associates/network/main.html HTTP/1.1 主机:

affiliate-program.amazon.com 用户代理:Mozilla/5.0(Windows NT 6.0;

rv:6.0) Gecko/20100101 Firefox/6.0 接受:

text/html,application/xhtml+xml,application/xml;q=0.9,/;q=0.8

接受语言:en-gb,en;q=0.5 接受编码:gzip,放气

接受字符集:ISO-8859-1,utf-8;q=0.7,*;q=0.7 连接:保持活动

推荐人:https://affiliate-program.amazon.com/Cookie:

apn-user-id=P0000000000; session-id-time=1317366000l;

session-id=182-9139891-5240049;

__utma=125759317.157031897.1316727783.1316727783.1316795373.2;

__utmz=125759317.1316727783.1.1.utmccn=(direct)|utmcsr=(direct)|utmcmd=(none);

ubid-main=190-8295480-4625243; __utmv=125759317.koicarandsup-20;

x-main=qIM@jFtaFnr4KaiFFutR7WZ1QkQHqoq9;

在-主= 4 | 3iPYr7E1Pn32BbMI4MHFaMtbn / 0v54qEG1Jn9Pk + 7Hi2Cws1f + jBSUt9oyBzrpy6BX1XCsZ / qoJlbswA0G2U3L9Yhec4CjSlsLZM +的MEPR / AiNAbvuUDzj9wL1HI2x + e7tBqDLhK + fas6R562qkQBX + 9Y7bhE1St11hjislFijGuTcbtr + 5mUz1FuweEFaH / xtHacsJ3Yth9iOiska0CbQ ==; P>

__utmb=125759317; __utmc=125759317

HTTP/1.1 200 OK 日期:2011 年 9 月 23 日星期五 16:30:36 GMT 服务器:服务器

x-amz-id-1:02WEQDKB29RGKP5T4NWE x-amz-id-2:

xFfF8ncVlxX9KZtDLganiEY4CcDu+qXwkV5CBJGrKWY= 设置Cookie:

ubid-main=190-8295480-4625243;路径=/;域名=.amazon.com; expires=周二

格林威治标准时间 2036 年 1 月 1 日 08:00:01 变化:接受编码,用户代理

Content-Encoding: gzip Cneonction: close Transfer-Encoding: chunked

内容类型:文本/html; charset=UTF-8


V192206992.jpg">https://images-na.ssl-images-amazon.com/images/G/01/associates/network/thumb-slideshow-widget.V192206992.jpg

获取

/images/G/01/associates/network/thumb-slideshow-widget.V192206992.jpg

HTTP/1.1 主机:images-na.ssl-images-amazon.com 用户代理:Mozilla/5.0

(Windows NT 6.0; rv:6.0) Gecko/20100101 Firefox/6.0 接受:

image/png,image/;q=0.8,/*;q=0.5 接受语言:en-gb,en;q=0.5

Accept-Encoding: gzip, deflate Accept-Charset:

ISO-8859-1,utf-8;q=0.7,*;q=0.7 连接:keep-alive Referer:

https://affiliate-program.amazon.com/gp/associates/network/main.html

HTTP/1.1 200 OK 服务器:服务器内容长度:4119 Last-Modified:

2010 年 6 月 2 日星期三 17:03:17 GMT 内容类型:image/jpeg X-Cache-Lookup:

点击来自 cdn-images.amazon.com:8080,MISS 来自

cdn-images.amazon.com:10080 缓存控制:max-age=607570264 日期:

2011 年 9 月 23 日星期五 16:30:37 GMT 连接:保持活动


SL75.jpg">https://images-na.ssl-images-amazon.com/images/I/41WtSRWclnL.SL75.jpg

GET /images/I/41WtSRWclnL.SL75.jpg HTTP/1.1 主机:

images-na.ssl-images-amazon.com 用户代理:Mozilla/5.0 (Windows NT

6.0; rv:6.0) Gecko/20100101 Firefox/6.0 接受:

image/png,image/;q=0.8,/*;q=0.5 接受语言:en-gb,en;q=0.5

Accept-Encoding: gzip, deflate Accept-Charset:

ISO-8859-1,utf-8;q=0.7,*;q=0.7 连接:keep-alive Referer:

https://affiliate-program.amazon.com/gp/associates/network/main.html

HTTP/1.1 200 OK 服务器:服务器内容长度:1317 Last-Modified:

2011 年 5 月 26 日星期四 11:17:40 GMT 内容类型:image/jpeg X-Cache-Lookup:

来自 cdn-images.amazon.com:10080 缓存控制的命中:公共,

max-age=628443948 到期:2031 年 8 月 23 日星期六 08:16:25 GMT 日期:23 日星期五

2011 年 9 月 16:30:37 GMT 连接:保持活动


SL75.jpg">https://images-na.ssl-images-amazon.com/images/I/417XQ0XwQuL.SL75.jpg

GET /images/I/417XQ0XwQuL.SL75.jpg HTTP/1.1 主机:

images-na.ssl-images-amazon.com 用户代理:Mozilla/5.0 (Windows NT

6.0; rv:6.0) Gecko/20100101 Firefox/6.0 接受:

image/png,image/;q=0.8,/*;q=0.5 接受语言:en-gb,en;q=0.5

Accept-Encoding: gzip, deflate Accept-Charset:

ISO-8859-1,utf-8;q=0.7,*;q=0.7 连接:keep-alive Referer:

https://affiliate-program.amazon.com/gp/associates/network/main.html

HTTP/1.1 200 OK 服务器:服务器内容长度:1321 Last-Modified:

2010 年 7 月 29 日星期四 04:26:28 GMT 内容类型:image/jpeg 缓存控制:

public, max-age=628496714 过期时间:星期六,2031 年 8 月 23 日 22:55:51 GMT 日期:

2011 年 9 月 23 日星期五 16:30:37 GMT 连接:保持活动


SL75.jpg">https://images-na.ssl-images-amazon.com/images/I/417tb3B43YL.SL75.jpg

GET /images/I/417tb3B43YL.SL75.jpg HTTP/1.1 主机:

images-na.ssl-images-amazon.com 用户代理:Mozilla/5.0 (Windows NT

6.0; rv:6.0) Gecko/20100101 Firefox/6.0 接受:

image/png,image/;q=0.8,/*;q=0.5 接受语言:en-gb,en;q=0.5

Accept-Encoding: gzip, deflate Accept-Charset:

ISO-8859-1,utf-8;q=0.7,*;q=0.7 连接:keep-alive Referer:

https://affiliate-program.amazon.com/gp/associates/network/main.html

HTTP/1.1 200 OK 服务器:服务器内容长度:2462 Last-Modified:

2009 年 6 月 26 日星期五 04:52:12 GMT 内容类型:image/jpeg X-Cache-Lookup:

点击来自 cdn-images.amazon.com:8080,MISS 来自

cdn-images.amazon.com:10080 缓存控制:max-age=607635331 日期:

2011 年 9 月 23 日星期五 16:30:37 GMT 连接:保持活动


SL75.jpg">https://images-na.ssl-images-amazon.com/images/I/41sh5uiQ83L.SL75.jpg

GET /images/I/41sh5uiQ83L.SL75.jpg HTTP/1.1 主机:

images-na.ssl-images-amazon.com 用户代理:Mozilla/5.0 (Windows NT

6.0; rv:6.0) Gecko/20100101 Firefox/6.0 接受:

image/png,image/;q=0.8,/*;q=0.5 接受语言:en-gb,en;q=0.5

Accept-Encoding: gzip, deflate Accept-Charset:

ISO-8859-1,utf-8;q=0.7,*;q=0.7 连接:keep-alive Referer:

https://affiliate-program.amazon.com/gp/associates/network/main.html

HTTP/1.1 200 OK 服务器:服务器内容长度:1341 Last-Modified:

2011 年 9 月 15 日星期四 20:05:25 GMT 内容类型:image/jpeg X-Cache-Lookup:

来自 cdn-images.amazon.com:10080 Cache-Control: public 的 MISS,

max-age=630611997 到期:2031 年 9 月 17 日,星期三 10:30:34 GMT 日期:23 日,星期五

2011 年 9 月 16:30:37 GMT 连接:保持活动


utm.gif?utmwv=1&utmn=61668861&utmcs=UTF-8&utmsr=1280x1024&utmsc=24-bit&utmul=en-gb&utmje=1&utmfl=10.3%20r183&utmdt=Amazon.com%20Associates%20Central%20-%20Home&utmhn=affiliate-program. amazon.com&utmr=0&utmp=/gp/associates/network/main.html">https://affiliate-program.amazon.com/_utm.gif?utmwv=1&utmn=61668861&utmcs=UTF-8&utmsr=1280x1024&utmsc=24-bit&utmul= en-gb&utmje=1&utmfl=10.3%20r183&utmdt=Amazon.com%20Associates%20Central%20-%20Home&utmhn=affiliate-program.amazon.com&utmr=0&utmp=/gp/associates/network/main.html

获取

/__utm.gif?utmwv=1&utmn=61668861&utmcs=UTF-8&utmsr=1280x1024&utmsc=24-bit&utmul=en- gb&utmje=1&utmfl=10.3%20r183&utmdt=Amazon.com%20Associates%20Central%20-%20Home&utmhn=affiliate-program.amazon.com&utmr=0&utmp=/gp/associates/network/main.html

HTTP/1.1 主机:affiliate-program.amazon.com 用户代理:Mozilla/5.0

(Windows NT 6.0; rv:6.0) Gecko/20100101 Firefox/6.0 接受:

image/png,image/;q=0.8,/*;q=0.5 接受语言:en-gb,en;q=0.5

Accept-Encoding: gzip, deflate Accept-Charset:

ISO-8859-1,utf-8;q=0.7,*;q=0.7 连接:keep-alive Referer:

https://affiliate-program.amazon.com/gp/associates/network/main.html

Cookie:apn-user-id=P0000000000; session-id-time=1317366000l;

session-id=182-9139891-5240049;

__utma=125759317.157031897.1316727783.1316727783.1316795373.2;

__utmz=125759317.1316727783.1.1.utmccn=(direct)|utmcsr=(direct)|utmcmd=(none);

ubid-main=190-8295480-4625243; __utmv=125759317.koicarandsup-20;

x-main=qIM@jFtaFnr4KaiFFutR7WZ1QkQHqoq9;

在-主= 4 | 3iPYr7E1Pn32BbMI4MHFaMtbn / 0v54qEG1Jn9Pk + 7Hi2Cws1f + jBSUt9oyBzrpy6BX1XCsZ / qoJlbswA0G2U3L9Yhec4CjSlsLZM +的MEPR / AiNAbvuUDzj9wL1HI2x + e7tBqDLhK + fas6R562qkQBX + 9Y7bhE1St11hjislFijGuTcbtr + 5mUz1FuweEFaH / xtHacsJ3Yth9iOiska0CbQ ==; P>

__utmb=125759317; __utmc=125759317

HTTP/1.1 200 OK 日期:2011 年 9 月 23 日星期五 16:30:37 GMT 服务器:服务器

最后修改时间:格林威治标准时间 2011 年 9 月 16 日星期五 11:22:34 Etag:“23-35b3d280”

接受范围:字节内容长度:35 连接:关闭

内容类型:图片/gif


SL75.jpg">https://images-na.ssl-images-amazon.com/images/I/51993R08WLL.SL75.jpg

GET /images/I/51993R08WLL.SL75.jpg HTTP/1.1 主机:

images-na.ssl-images-amazon.com 用户代理:Mozilla/5.0 (Windows NT

6.0; rv:6.0) Gecko/20100101 Firefox/6.0 接受:

image/png,image/;q=0.8,/*;q=0.5 接受语言:en-gb,en;q=0.5

Accept-Encoding: gzip, deflate Accept-Charset:

ISO-8859-1,utf-8;q=0.7,*;q=0.7 连接:keep-alive Referer:

https://affiliate-program.amazon.com/gp/associates/network/main.html

HTTP/1.1 200 OK 服务器:服务器内容长度:1325 Last-Modified:

2010 年 7 月 27 日星期二 16:47:41 GMT 内容类型:image/jpeg X-Cache-Lookup:

来自 cdn-images.amazon.com:10080 Cache-Control: public 的 MISS,

max-age=628244375 到期时间:2031 年 8 月 21 日星期四 00:50:12 GMT 日期:23 日星期五

2011 年 9 月 16:30:37 GMT 连接:保持活动


SL75.jpg">https://images-na.ssl-images-amazon.com/images/I/41is%2B997KUL.SL75.jpg

GET /images/I/41is%2B997KUL.SL75.jpg HTTP/1.1 主机:

images-na.ssl-images-amazon.com 用户代理:Mozilla/5.0 (Windows NT

6.0; rv:6.0) Gecko/20100101 Firefox/6.0 接受:

image/png,image/;q=0.8,/*;q=0.5 接受语言:en-gb,en;q=0.5

Accept-Encoding: gzip, deflate Accept-Charset:

ISO-8859-1,utf-8;q=0.7,*;q=0.7 连接:keep-alive Referer:

https://affiliate-program.amazon.com/gp/associates/network/main.html

HTTP/1.1 200 OK 服务器:服务器内容长度:1662 Last-Modified:

2007 年 11 月 11 日星期日 01:27:41 GMT 内容类型:image/jpeg X-Cache-Lookup:

来自 cdn-images.amazon.com:10080 Cache-Control: public 的 MISS,

max-age=628487843 过期:2031 年 8 月 23 日星期六 20:28:00 GMT 日期:23 日星期五

2011 年 9 月 16:30:37 GMT 连接:保持活动


SL75.jpg">https://images-na.ssl-images-amazon.com/images/I/518ISDAvx1L.SL75.jpg

GET /images/I/518ISDAvx1L.SL75.jpg HTTP/1.1 主机:

images-na.ssl-images-amazon.com 用户代理:Mozilla/5.0 (Windows NT

6.0; rv:6.0) Gecko/20100101 Firefox/6.0 接受:

image/png,image/;q=0.8,/*;q=0.5 接受语言:en-gb,en;q=0.5

Accept-Encoding: gzip, deflate Accept-Charset:

ISO-8859-1,utf-8;q=0.7,*;q=0.7 连接:keep-alive Referer:

https://affiliate-program.amazon.com/gp/associates/network/main.html

HTTP/1.1 200 OK 服务器:服务器内容长度:1111 Last-Modified:

2010 年 7 月 27 日星期二 00:37:08 GMT 内容类型:image/jpeg X-Cache-Lookup:

来自 cdn-images.amazon.com:10080 Cache-Control: public 的 MISS,

max-age=628003065 过期:2031 年 8 月 18 日星期一 05:48:22 GMT 日期:23 日星期五

2011 年 9 月 16:30:37 GMT 连接:保持活动


SL75.jpg">https://images-na.ssl-images-amazon.com/images/I/4155OOdySdL.SL75.jpg

GET /images/I/4155OOdySdL.SL75.jpg HTTP/1.1 主机:

images-na.ssl-images-amazon.com 用户代理:Mozilla/5.0 (Windows NT

6.0; rv:6.0) Gecko/20100101 Firefox/6.0 接受:

image/png,image/;q=0.8,/*;q=0.5 接受语言:en-gb,en;q=0.5

Accept-Encoding: gzip, deflate Accept-Charset:

ISO-8859-1,utf-8;q=0.7,*;q=0.7 连接:keep-alive Referer:

https://affiliate-program.amazon.com/gp/associates/network/main.html

HTTP/1.1 200 OK 服务器:服务器内容长度:1494 Last-Modified:

2009 年 8 月 20 日星期四 15:52:47 GMT 内容类型:image/jpeg X-Cache-Lookup:

来自 cdn-images.amazon.com:10080 Cache-Control: public 的 MISS,

max-age=630336792 过期:2031 年 9 月 14 日星期日 06:03:49 GMT 日期:23 日星期五

2011 年 9 月 16:30:37 GMT 连接:保持活动


utm.gif?utmwv=1&utmt=var&utmn=1408273993">https://affiliate-program.amazon.com/_utm.gif?utmwv=1&utmt=var&utmn=1408273993

GET /__utm.gif?utmwv=1&utmt=var&utmn=1408273993 HTTP/1.1 主机:

affiliate-program.amazon.com 用户代理:Mozilla/5.0(Windows NT 6.0;

rv:6.0) Gecko/20100101 Firefox/6.0 接受:

image/png,image/;q=0.8,/*;q=0.5 接受语言:en-gb,en;q=0.5

Accept-Encoding: gzip, deflate Accept-Charset:

ISO-8859-1,utf-8;q=0.7,*;q=0.7 连接:keep-alive Referer:

https://affiliate-program.amazon.com/gp/associates/network/main.html

Cookie:apn-user-id=P0000000000; session-id-time=1317366000l;

session-id=182-9139891-5240049;

__utma=125759317.157031897.1316727783.1316727783.1316795373.2;

__utmz=125759317.1316727783.1.1.utmccn=(direct)|utmcsr=(direct)|utmcmd=(none);

ubid-main=190-8295480-4625243; __utmv=125759317.koicarandsup-20;

x-main=qIM@jFtaFnr4KaiFFutR7WZ1QkQHqoq9;

在-主= 4 | 3iPYr7E1Pn32BbMI4MHFaMtbn / 0v54qEG1Jn9Pk + 7Hi2Cws1f + jBSUt9oyBzrpy6BX1XCsZ / qoJlbswA0G2U3L9Yhec4CjSlsLZM +的MEPR / AiNAbvuUDzj9wL1HI2x + e7tBqDLhK + fas6R562qkQBX + 9Y7bhE1St11hjislFijGuTcbtr + 5mUz1FuweEFaH / xtHacsJ3Yth9iOiska0CbQ ==; P>

__utmb=125759317; __utmc=125759317

HTTP/1.1 200 OK 日期:2011 年 9 月 23 日星期五 16:30:37 GMT 服务器:服务器

最后修改时间:格林威治标准时间 2011 年 9 月 16 日星期五 11:22:34 Etag:“23-35b3d280”

接受范围:字节内容长度:35 连接:关闭

内容类型:图片/gif


谁能解释为什么这不起作用?

【问题讨论】:

那条消息让我觉得他们可能有一些 javascript 代码试图从另一个请求中设置或读取 cookie。尝试使用 livehttpheaders 或使用 wireshark 来嗅探到他们网站的正常登录请求,看看你是否注意到任何其他 URL 被点击,特别是某种 cookie 检查。或者关闭 followlocation 并查看是否有任何 javascript 用于测试您可能会被重定向过去的页面上的 cookie。 看起来有几个 cookie 没有设置,包括我认为很重要的 at-main。尝试摆脱 curlopt_cookiesession 选项,我不知道它与 followlocation 的行为如何,但我认为没有必要。所做的只是在开始之前删除某些会话 cookie。 另外,你确定你有正确的登录 URL 吗?如果我转到您在浏览器中使用的 url,我会被重定向到其他地方,并且登录表单的操作是 https://www.amazon.com/ap/signin 还有一个安全令牌,您需要在登录之前从 HTML 中提取,它是 appActionToken。 【参考方案1】:

编辑:截至 2016 年 6 月,此代码已损坏。请参阅 this answer 了解解释和可能的解决方法。上一个链接中提到的相同技术已添加到员工的登录中。


我编写了这段代码,它对我很有效,在最后一个 var_dump 中,我看到了我所有的帐户信息和类似的东西。如果您不删除 cookie,您可以使用您的登录名向受保护的页面发出后续 curl 请求。

希望这可以帮助您了解如何操作。很多时候在大型网站上,您需要访问登录页面来设置 cookie,而且它们通常在您需要提交的表单上都有 csrf 令牌。

当然,如果亚马逊稍微改变了他们的表单或网址,这将不得不进行一些调整,但希望他们不要太频繁地这样做。

<?php

$email    = 'you@yoursite.com';
$password = 'password';

// initial login page which redirects to correct sign in page, sets some cookies
$URL = 'https://affiliate-program.amazon.com/gp/associates/join/landing/main.html';

$ch  = curl_init();

curl_setopt($ch, CURLOPT_URL, $URL);
curl_setopt($ch, CURLOPT_COOKIEJAR, 'amazoncookie.txt');
curl_setopt($ch, CURLOPT_COOKIEFILE, 'amazoncookie.txt');
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:35.0) Gecko/20100101 Firefox/35.0');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, 1);
//curl_setopt($ch, CURLOPT_VERBOSE, true);
curl_setopt($ch, CURLOPT_STDERR,  fopen('php://stdout', 'w'));
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);

$page = curl_exec($ch);

//var_dump($page);exit;

// try to find the actual login form
if (!preg_match('/<form name="sign_in".*?<\/form>/is', $page, $form)) 
    die('Failed to find log in form!');


$form = $form[0];

// find the action of the login form
if (!preg_match('/action=(?:\'|")?([^\s\'">]+)/i', $form, $action)) 
    die('Failed to find login form url');


$URL2 = $action[1]; // this is our new post url

// find all hidden fields which we need to send with our login, this includes security tokens
$count = preg_match_all('/<input type="hidden"\s*name="([^"]*)"\s*value="([^"]*)"/i', $form, $hiddenFields);

$postFields = array();

// turn the hidden fields into an array
for ($i = 0; $i < $count; ++$i) 
    $postFields[$hiddenFields[1][$i]] = $hiddenFields[2][$i];


// add our login values
$postFields['username'] = $email;
$postFields['password'] = $password;

$post = '';

// convert to string, this won't work as an array, form will not accept multipart/form-data, only application/x-www-form-urlencoded
foreach($postFields as $key => $value) 
    $post .= $key . '=' . urlencode($value) . '&';


$post = substr($post, 0, -1);

// set additional curl options using our previous options
curl_setopt($ch, CURLOPT_URL, $URL2);
curl_setopt($ch, CURLOPT_REFERER, $URL);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);

$page = curl_exec($ch); // make request

var_dump($page); // should be logged in

【讨论】:

@drew010:这是一个绝妙的解决方案。我需要使用不同的 URL 登录。我没有找到像您在解决方案中使用的那样带有 openID 的 URL,所以我尝试使用 $URL="sellercentral-japan.amazon.com/gp/sign-in/sign-in.html/…";作为响应,它会显示带有以下错误消息的登录页面:“尝试执行此操作时出错。请在 15 分钟后重试。”它也在 15 分钟后显示相同的消息。我已经发布了我的问题:***.com/questions/11061543/… 这曾经有效,但亚马逊已经改变了他们的登录过程,添加了某种 CSFR 保护,这使得使用 cURL 登录变得困难。最近(过去 10 天)还有其他人遇到过这个问题吗? @umami 是的,即使我也有同样的问题.. 你找到解决办法了吗? 你能为this网站制作这样的脚本吗 @drew010 完美。我将其更改为与 Amazon DE 一起使用,只需将 URL 和用户名更改为属性中的电子邮件 :)【参考方案2】:

你需要先让亚马逊设置cookie。

试试:

// 1. Create a cookie file and set basic params
$ckfile = tempnam ("/your/path/to/cookie/folder", "cookie.txt");
$target_host = "https://affiliate-program.amazon.com";
$target_request = "/gp/flex/sign-in/select.html";
$post_data = "action=sign-in&email=$username&password=$password";

// 2. Visit homepage to set cookie
$ch = curl_init ($target_host);
curl_setopt ($ch, CURLOPT_COOKIEJAR, $ckfile); 
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, true);
$output = curl_exec ($ch);

// 3. Continue
$login = curl_init ($target_host.$target_request);
curl_setopt($login, CURLOPT_COOKIESESSION, 1);
curl_setopt($login, CURLOPT_COOKIEJAR, $ckfile);
curl_setopt($login, CURLOPT_COOKIEFILE, $ckfile);
curl_setopt($login, CURLOPT_TIMEOUT, 40);
curl_setopt($login, CURLOPT_RETURNTRANSFER, 1);        
curl_setopt($login, CURLOPT_HEADER, 1);        
curl_setopt($login, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
curl_setopt($login, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($login, CURLOPT_POST, 1);
curl_setopt($login, CURLOPT_POSTFIELDS, $post_data);
echo curl_exec($login);
curl_close($login);  

【讨论】:

我得到与问题中所述相同的输出(足够接近)

以上是关于PHP Curl - Cookie 问题的主要内容,如果未能解决你的问题,请参考以下文章

PHP cURL 没有存储会话 cookie...如何解决这个问题?

使用 PHP 和 Curl 登录 Google,Cookie 已关闭?

为啥 php curl 不在我的 cookiefile 中保存 cookie?

php curl 生成的cookie 文件含义 cookie 属性含义

除了 CURLOPT_COOKIEFILE 之外,如何使用 PHP curl 发送 cookie?

php使用CURL不依赖COOKIEJAR获取COOKIE的方法