小弟初次尝试网络编程,初次使用C#……所以不是什么很复杂的功能,就是想自己做个自动登录。前几天拿一个小网站开刀,成功了,这次想提高些挑战难度,试着登录淘宝,一开始一切都顺利,能顺利的得到登录后的cookie,可是却发现无法用这个cookie打开任何页面。
我没有用HTTPrequest,用的是socket,请各位高手看看步骤对不对,是不是漏了什么。1、发送的get信息,打开http://login.taobao.com/member/login.jhtml
GET /member/login.jhtml HTTP/1.1
Accept: image/gif, image/jpeg, image/pjpeg, image/pjpeg, application/x-shockwave-flash, application/x-ms-application, application/x-ms-xbap, application/vnd.ms-xpsdocument, application/xaml+xml, application/vnd.ms-excel, application/msword, application/vnd.ms-powerpoint, */*
Accept-Language: zh-cn
User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)
Host: login.taobao.com
Connection: Keep-Alive2、收到的字符,得到6个cookie
HTTP/1.1 200 OK
Date: Thu, 14 Jul 2011 04:51:58 GMT
Server: Apache
X-Category: 
Set-Cookie: cookie2=12cf14e2c9c04033d8cbe025fe945eb4;Domain=.taobao.com;Path=/;HttpOnly
Set-Cookie: _tb_token_=73fe8de80bf14;Domain=.taobao.com;Path=/;Expires=Sat, 13-Aug-2011 04:51:58 GMT;HttpOnly
Set-Cookie: t=a72f5e0d6fe0ad476997f7229354344d; Domain=.taobao.com; Expires=Wed, 12-Oct-2011 04:51:58 GMT; Path=/
Set-Cookie: uc1=cookie14=UoLdH8VwX59X7A%3D%3D; Domain=.taobao.com; Path=/
Set-Cookie: v=0; Domain=.taobao.com; Path=/
Content-Language: zh-CN
Set-Cookie: _lang=zh_CN:GBK; Domain=.taobao.com; Path=/
Vary: Accept-Encoding
Cache-Control: no-cache
Expires: Thu, 01 Jan 1970 00:00:00 GMT
Pragma: no-cache
Keep-Alive: timeout=3, max=100
Connection: Keep-Alive
Transfer-Encoding: chunked
Content-Type: text/html;charset=GBK3、附上cookie,开始post数据
POST /member/login.jhtml HTTP/1.1
Accept: image/gif, image/jpeg, image/pjpeg, image/pjpeg, application/x-shockwave-flash, application/x-ms-application, application/x-ms-xbap, application/vnd.ms-xpsdocument, application/xaml+xml, application/vnd.ms-excel, application/msword, application/vnd.ms-powerpoint, */*
Referer: http://login.taobao.com/member/login.jhtml
Accept-Language: zh-cn
User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)
Content-Type: application/x-www-form-urlencoded
Accept-Encoding: gzip, deflate
Host: login.taobao.com
Content-Length: 523
Connection: Keep-Alive
Cache-Control: no-cache
Cookie: cookie2=12cf14e2c9c04033d8cbe025fe945eb4; _tb_token_=73fe8de80bf14; t=a72f5e0d6fe0ad476997f7229354344d; uc1=cookie14=UoLdH8VwX59X7A%3D%3D; v=0; _lang=zh_CN:GBKTPL_username=[名字]&TPL_password=[密码]&TPL_checkcode=&need_check_code=&_tb_token_=73fe8de80bf14&action=Authenticator&event_submit_do_login=anything&TPL_redirect_url=&from=tb&fc=2&style=default&css_style=&tid=XOR_1_000000000000000000000000000000_63584557337B0F777C727670&support=000001&CtrlVersion=1%2C0%2C0%2C7&loginType=3&minititle=&minipara=&umto=1600&pstrong=3&longLogin=0&llnick=&sign=&need_sign=&isIgnore=&full_redirect=&popid=&callback=&guf=&not_duplite_str=&need_user_id=&poy=&gvfdcname=&gvfdcre=&from_encoding=4、收到的字符,cookie增加到20个,貌似登录成功……
HTTP/1.1 302 Moved Temporarily
Date: Thu, 14 Jul 2011 04:53:04 GMT
Server: Apache
X-Category: 
P3P: CP='CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR'
Set-Cookie: uc1=lltime=1310618721&cookie14=UoLdH8VwX59e0g%3D%3D&existShop=false&cookie16=UtASsssmPlP%2Ff1IHDsDaPRu%2BPw%3D%3D&sg=d8e&cookie21=UtASsssmfA%3D%3D&tag=0&cookie15=VT5L2FSpMGV7TQ%3D%3D; Domain=.taobao.com; Path=/
Set-Cookie: ck1=; Domain=.taobao.com; Expires=Thu, 28-Jul-2011 04:53:04 GMT; Path=/
Set-Cookie: _sv_=0; Domain=.taobao.com; Path=/
Set-Cookie: tg=4; Domain=.taobao.com; Expires=Sat, 30-Mar-2013 04:53:04 GMT; Path=/
Set-Cookie: _cc_=URm48syIZQ%3D%3D; Domain=.taobao.com; Expires=Fri, 13-Jul-2012 04:53:04 GMT; Path=/
Set-Cookie: t=a72f5e0d6fe0ad476997f7229354344d; Domain=.taobao.com; Expires=Wed, 12-Oct-2011 04:53:04 GMT; Path=/
Set-Cookie: unb=724068998;Domain=.taobao.com;Path=/;HttpOnly
Set-Cookie: _nk_=[名字]; Domain=.taobao.com; Path=/
Set-Cookie: nt=Vq8l%2BKCLiHIh6KqyYEAjED1QfUKKXLdNQlLVQ5DBVKg%3D; Domain=.taobao.com; Expires=Fri, 11-Nov-2022 21:46:24 GMT; Path=/
Set-Cookie: _l_g_=Ug%3D%3D; Domain=.taobao.com; Path=/
Set-Cookie: cookie2=12cf14e2c9c04033d8cbe025fe945eb4;Domain=.taobao.com;Path=/;HttpOnly
Set-Cookie: _wwmsg_=0%2C0; Domain=.taobao.com; Path=/
Set-Cookie: tracknick=[名字]; Domain=.taobao.com; Expires=Fri, 13-Jul-2012 04:53:04 GMT; Path=/
Set-Cookie: ssllogin=; Domain=.taobao.com; Expires=Fri, 13-Jul-2012 04:53:04 GMT; Path=/
Set-Cookie: lastgetwwmsg=MTMxMDYxOTE4NA%3D%3D; Domain=.taobao.com; Path=/
Set-Cookie: cookie1=UUiD9%2FyN1eSJUMg3UP8aFMmTdHeFpE3uqMT1xVrxzHo%3D;Domain=.taobao.com;Path=/;HttpOnly
Set-Cookie: cookie17=VAMXcehbe2Pf;Domain=.taobao.com;Path=/;HttpOnly
Location: http://i.taobao.com/my_taobao.htm?nekot=em95bzJuZA%3D%3D1310619184253
Content-Language: zh-CN
Vary: Accept-Encoding
Content-Encoding: gzip
Cache-Control: no-cache
Expires: Thu, 01 Jan 1970 00:00:00 GMT
Pragma: no-cache
Content-Length: 20
Keep-Alive: timeout=3, max=100
Connection: Keep-Alive
Content-Type: text/html;charset=GBK5、然后用得到的cookie去打开它Location的那个网页。
GET /my_taobao.htm?nekot=em95bzJuZA%3D%3D1310619184253 HTTP/1.1
Accept: image/gif, image/jpeg, image/pjpeg, image/pjpeg, application/x-shockwave-flash, application/x-ms-application, application/x-ms-xbap, application/vnd.ms-xpsdocument, application/xaml+xml, application/vnd.ms-excel, application/msword, application/vnd.ms-powerpoint, */*
Accept-Language: zh-cn
User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)
Host: i.taobao.com
Connection: Keep-Alive
Cookie: cookie2=12cf14e2c9c04033d8cbe025fe945eb4; _tb_token_=73fe8de80bf14; t=a72f5e0d6fe0ad476997f7229354344d; uc1=lltime=1310618721&cookie14=UoLdH8VwX59e0g%3D%3D&existShop=false&cookie16=UtASsssmPlP%2Ff1IHDsDaPRu%2BPw%3D%3D&sg=d8e&cookie21=UtASsssmfA%3D%3D&tag=0&cookie15=VT5L2FSpMGV7TQ%3D%3D; v=0; _lang=zh_CN:GBK; ck1=; _sv_=0; tg=4; _cc_=URm48syIZQ%3D%3D; unb=724068998; _nk_=[名字]; nt=Vq8l%2BKCLiHIh6KqyYEAjED1QfUKKXLdNQlLVQ5DBVKg%3D; _l_g_=Ug%3D%3D; _wwmsg_=0%2C0; tracknick=[名字]; ssllogin=; lastgetwwmsg=MTMxMDYxOTE4NA%3D%3D; cookie1=UUiD9%2FyN1eSJUMg3UP8aFMmTdHeFpE3uqMT1xVrxzHo%3D; cookie17=VAMXcehbe2Pf6、问题就来了,服务器出错
HTTP/1.1 500 Internal Server Error
Date: Thu, 14 Jul 2011 04:55:35 GMT
Server: Apache
X-Category: 
Set-Cookie: tlut=UoLdH8VwX51IEA%3D%3D; Domain=.taobao.com; Path=/
Content-Language: zh-CN
Vary: Accept-Encoding
Cache-Control: no-cache
Expires: Thu, 01 Jan 1970 00:00:00 GMT
Pragma: no-cache
Content-Length: 2568
Connection: close
Content-Type: text/html;charset=utf-8像是服务器出错信息“The server encountered an internal error () that prevented it from fulfilling this request.”。但我用IE正常登录,用HTTP analyzer抓包前5步的结果基本一样,就是到了第6步,IE就能返回正常的字符串。不知道问题何在。

解决方案 »

  1.   

    完全按照浏览器中HTTP analyzer得到的格式和Header发送完全相同的内容。
      

  2.   


    早就比过了,用windiff比了,除了必要的参数值,可是都是一样的,无非是顺序上可能有些不同,而且少了
    Referer: http://login.taobao.com/member/login.jhtml
    Accept-Encoding: gzip, deflate
    可是我加上也没用,我试了
      

  3.   

    参数值有很多的啊
    比如
    User-Agent: 
    Accept:
    Accept-Language: 
    Accept-Encoding:
    Accept-Charset: 都加了吗?
    浏览器也是程序写的,如果严格一致的话,应该都是可以的
      

  4.   

    哈哈找到问题了,原因还是在我的程序里,不是淘宝有什么新花样了。
    我程序中解析域名的时候,我为了提高效率,只解析了一次,可有淘宝登陆后重定向到了
    i.taobao.com,这个域名与原来登陆时的域名不一样,IP也不一样的,可程序却仍然去连接登录用的服务器……嗨,低级错误,低级错误……
        if (CurrentEndPoint == null)
        {
            IPAddress hostadd = Dns.GetHostEntry(CurrentServer).AddressList[0];
            IPEndPoint EPhost = new IPEndPoint(hostadd, 80);
            CurrentEndPoint = EPhost;
        }到此结贴!
      

  5.   

    LZ的问题跟我一样,只不过我用的是httpwebrequest,我也是一直登录丢失啊,后来发现是操蛋的cookie跨域问题,终于解决问题了,但是浪费了我几天的时间。
      

  6.   

    "操蛋的cookie跨域问题"  是什么问题,刚刚学POST中