关于cnblog登陆的研究
"HTTP/1.1 302 Found
Cache-Control: private, no-cache="Set-Cookie
Content-Type: text/html; charset=utf-8
Location: http://www.cnblogs.com/
Server: Microsoft-IIS/7.5
X-AspNet-Version: 4.0.30319
Set-Cookie: .DottextCookie=0C6843C9E03ACE08F327EC32398EA8211C65BB6E33AD4F79991E57E53A537F437A12515A3CF111EA1FE20FE87CD6A8FE2D9D32CCA0418DBFD183B6B965DDB8D2BCA79CECE3F1810BE1F873515C71526DB4DD0D64D682F809C5EB43B46FAF5D61392157BDF9B38E0F4CD0E0F9; domain=.cnblogs.com; path=/; HttpOnly
X-Powered-By: ASP.NET
X-UA-Compatible: IE=edge
Date: Mon, 25 Feb 2013 00:58:31 GMT
Content-Length: 140
<html><head><title>Object moved</title></head><body>
<h2>Object moved to <a href="http://www.cnblogs.com/">here</a>.</h2>
</body></html>
上面文字是发送登陆cnblog请求http://passport.cnblogs.com/login.aspx?ReturnUrl=http%3a%2f%2fwww.cnblogs.com%2f后返回的header,HTTP/1.1 302 Found这个是重定向的意思。怎么做到的我登陆blog的时候,他直接跳转了,这个返回header怎么分析。因为我并没有看到
<html><head><title>Object moved</title></head><body>
<h2>Object moved to <a href="http://www.cnblogs.com/">here</a>.</h2>
</body></html>
只有在出错的时候才会看到,在php模拟post的时候,没有加curl_setopt($ch,CURLOPT_FOLLOWLOCATION,TRUE);这句话才会出现的
其实原因很简单,看下面的聊天记录:
那就是实际上那时候已经登录了
妖媚の竪琴手 9:29:20
被跳转掉了
13路公交车 9:29:28
恩
13路公交车 9:29:32
因为没设定那个值
13路公交车 9:29:51
所以他只能是返回<html><head><title>Object moved</title></head><body>
<h2>Object moved to <a href="http://www.cnblogs.com/">here</a>.</h2>
</body></html>
13路公交车 9:29:55
让我手动点击了
妖媚の竪琴手 9:30:17
但是你点击过去 根本没有发送cookie
妖媚の竪琴手 9:30:32
因为你手点的 是把你浏览器下的cookie带过去
妖媚の竪琴手 9:30:36
而不是你另存的 (这个能不能不用cookiefile,用字串行吗?之后考虑)
13路公交车 9:31:55
哦
13路公交车 9:32:04
所以点击的话
13路公交车 9:32:10
返回的就是404了
妖媚の竪琴手 9:32:37
应该是这样