需要PHP Curl Mozilla LiveHttpHeaders分析

时间:2011-09-17 18:17:11

标签: php cookies curl http-headers

我尝试使用PHP Curl库登录网站。即使我已经成功登录,我似乎无法访问登录页面之外的任何其他页面。现在我知道饼干可能存在一些问题,但是相信我,我已经尝试过与COOKIEJAR和COOKIEFILE的所有可能组合。 我需要一些帮助来分析这组LiveHTTPHeaders信息。我担心帖子字段 - 特别是Login.x和Login.y。他们似乎每次登录都会改变。这可能是个问题吗?我如何计算出一个随机整数分配给这个值的方式?此外,是否添加了超过1个cookie?如果是这样,我如何将其纳入卷曲?我是否在一个声明中使用一个COOKIEJAR,多个或名称数量的cookie ..

我已粘贴下面的标题 -

http://amizone.net/Amizone/default.aspx

POST /Amizone/default.aspx HTTP/1.1
Host: amizone.net
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:6.0.2) Gecko/20100101 Firefox/6.0.2
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip, deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Connection: keep-alive
Referer: http://amizone.net/
Cookie: ASPSESSIONIDSSBCDQAQ=FJHPMILBALMDGIFEOOOBNFHI
Content-Type: application/x-www-form-urlencoded
Content-Length: 55
username=1596681&password=CENSORED&Login.x=14&Login.y=15

如果需要,我只会发布cURL代码。

主页的LiveHTTPHeaders信息:

GET /amizone/default.aspx HTTP/1.1
Host: amizone.net
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:6.0.2) Gecko/20100101 Firefox/6.0.2
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip, deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Connection: keep-alive

登录的LiveHTTPHeaders信息:**显示在顶部。没有变化。

登录后任意页面访问的LiveHTTPHeaders信息 -

GET /amizone/WebForms/TimeTable/StudentTimeTableForWeek.aspx HTTP/1.1
Host: amizone.net
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:6.0.2) Gecko/20100101 Firefox/6.0.2
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip, deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Connection: keep-alive
Referer: http://amizone.net/amizone/WebForms/Home.aspx
Cookie: ASP.NET_SessionId=hn5mfsre0y3b1l45nxlgzr55;                                                     UserId=127953D3849DEF71FB6CF9F55DD3BBADE48E686D24ADC87923FB6C60077ECC0362AB0C5A9C4DF194461C348DBAE6FEC861827F886FE2C17EA79155500CA4FC04EE897B7658A59DA2F286F2436F6EDD07BE2DD7DD829798F4C81ABAEFEE400B3A71078A74BF1C169BF1DA2865CC9E5968FF26ED7D; countrytabs=0; countrytabsRT=0; countrytabsRB=0

***注意在这种情况下如何发送多个cookie(我认为)。我的cookiejar和cookiefile命令应该如何改变?

2 个答案:

答案 0 :(得分:1)

录制会话时,首先刷新所有Cookie,然后确保在服务器设置Cookie时注意,这一点非常重要。

通常,所需的cookie在登录页面或浏览器首先加载的其他页面中设置,然后当您发布到特定URL时,必须传递先前设置的cookie。

因此,附加的痕迹不足。

答案 1 :(得分:1)

过去,这个cURL代码足以通过存储cookie来维护登录会话:

$ch = curl_init('https://somesecureurl.com/login/account');
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_ENCODING, 'gzip, deflate');
curl_setopt($ch, CURLOPT_COOKIEFILE, '/tmp/hmcookies.txt'); // cookies in this file are sent by curl with the request
curl_setopt($ch, CURLOPT_COOKIEJAR,  '/tmp/hmcookies.txt'); // upon completing request, curl saves/updates any cookies in this file

$data = curl_exec($ch);

要确保的其他事项,cookiejar文件可由Web服务器写入,或者它具有创建文件的权限。

如Daniel所述,某些网站可能要求您首先访问登录页面以设置初始Cookie,然后发布登录表单。所以你的要求可能会出现:

Request login page
Post to login form
Try to access protected page