http://www.sufeinet.com/plugin.php?id=keke_group

苏飞论坛

 找回密码
 马上注册

QQ登录

只需一步,快速开始

分布式系统框架(V2.0) 轻松承载百亿数据,千万流量!讨论专区 - 源码下载 - 官方教程

HttpHelper爬虫框架(V2.7-含.netcore) HttpHelper官方出品,爬虫框架讨论区 - 源码下载 - 在线测试和代码生成

HttpHelper爬虫类(V2.0) 开源的爬虫类,支持多种模式和属性 源码 - 代码生成器 - 讨论区 - 教程- 例子

查看: 20232|回复: 14

[其他] 郁闷呀,post登录成功后,并未保持登录状态

[复制链接]
发表于 2015-3-22 21:47:46 | 显示全部楼层 |阅读模式
5金钱
本帖最后由 xz_whist 于 2015-3-22 21:52 编辑

超级郁闷呀,用post方式提交数据后,服务器返回成功的标志了,但后续的操作无法进行了
[JavaScript] 纯文本查看 复制代码
{"status":"success","info":{"name":"\u5a01\u950b\u7f51\u8bba\u575b","link":"http:\/\/bbs.feng.com\/","wait":2000,"syn_str":"<script type=\"text\/javascript\" src=\"http:\/\/bbs.feng.com\/api\/uc.php?time=1426864865&code=66944VKvQSGUhnlrWyeImCK0zBQwzkDDc5uow4qTlnNGtzPGP2DsFLAdzUp4l2TwmARshIRQhUtsnxDENIZqnp5EchdEX5fqz9Hjy%2B5BU3a%2F9LdLw7IJZ0vJ9HMsE8W51WsoexE5xt9DFsqfVj%2F7fo0is9LuwHM0xhBbl9lUF1KUvmnTQDmTjHajkiqrlNu%2FnZCYzOkUNpXR0vK%2BVHgWRcSrs5XZRVFiKK2OmuOl74AvfaG4QsFa3gLFBaJYiKx48HQXBtApkDgSMoVb9ljEU01LCJg88GiUDr3gSE1LrRR%2BC479xtfvW8PbuiQbtUqqMWDuuULqP2b7o6ch1XB00gks%2FKCTYY4gLyTDF5HDKmYEO%2Bu3WiK95J%2BN4GUZAKkWrJSC5i6H3DzCCizqUMevqctZRLFCsx%2BeK%2BRAXPSUqg\" reload=\"1\"><\/script>"}}

返回json ,状态:success 说明post是成功的,然后保存这步的cookies, 用作下一步获取个人的信息,却发现还是xian未登陆

//操作的流程
1、登陆前的cookie获取
[C#] 纯文本查看 复制代码
    HttpItemObj = new HttpItem();
HttpHelperObj = new HttpHelper();
HttpResultObj = new HttpResult();
HttpItemObj.Method = "GET";
//登陆窗口的链接
            HttpItemObj.URL = "http://passport.feng.com/?r=user/login&sso%5Bjump%5D=http%3A%2F%2Fbbs.feng.com%2F&sso%5Bname%5D=%E5%A8%81%E9%94%8B%E8%AE%BA%E5%9D%9B&sso%5Bapps%5D=2&sso%5Bverify%5D=7a928982dd59b02a3024858bd61ccf22";
HttpItemObj.Referer = "bbs.feng.com";
HttpResultObj = HttpHelperObj.GetHtml(HttpItemObj);
            cookies = HttpResultObj.Cookie;
string htmltext = HttpResultObj.Html;
//取得页面上隐藏的 v_token的值,后面post登陆要用到
 strV_token = HtmlHelper.GetWfLoginV_token(htmltext);



2、输入用户名密码后开始登陆,第一次如果用户名密码正确,不需要输入验证码
[C#] 纯文本查看 复制代码
        HttpItemObj.URL = string.Format("http://passport.feng.com/index.php?r=user/LoginProcess");
            HttpItemObj.Method = "POST";
            HttpItemObj.Allowautoredirect = true;
            HttpItemObj.ContentType = "application/x-www-form-urlencoded; charset=utf-8";

            //登录post要用到的参数
            //Parameter    value   
            //check_code    验证码,第一次可为空
            //password           密码        
            //username           用户名        
            //v_token          550c3a9d0b90b     隐藏值,第一步取                
            //wekey_token                            密保动态密码 没用

            HttpItemObj.Postdata = string.Format("check_code={0}&password={1}&username={2}&v_token={3}&wekey_token=", string.Empty, this.txtPwd.Text.Trim(), this.txtName.Text.Trim(),strV_token);
            HttpItemObj.Header.Add("X-Requested-With", "XMLHttpRequest");
            HttpItemObj.Header.Add("Accept-Encoding", "gzip, deflate");
            HttpItemObj.Referer = "http://passport.feng.com/?r=user/login&sso%5Bjump%5D=http%3A%2F%2Fbbs.feng.com%2F&sso%5Bname%5D=%E5%A8%81%E9%94%8B%E8%AE%BA%E5%9D%9B&sso%5Bapps%5D=2&sso%5Bverify%5D=7a928982dd59b02a3024858bd61ccf22";
            HttpItemObj.Accept = "application/json, text/javascript, */*; q=0.01";
            HttpItemObj.UserAgent = "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; WOW64; Trident/6.0)";
            HttpItemObj.Encoding = Encoding.UTF8;

            HttpItemObj.Cookie = cookies;
            HttpResultObj = HttpHelperObj.GetHtml(HttpItemObj);

            cookies = HttpResultObj.Cookie;
            string strReulst = HttpResultObj.Html; //这里就会返回 json是否成功



//3、访问论坛主页bbs.feng.com .获取其html代码,显示还是未登录的状态
[C#] 纯文本查看 复制代码
    HttpItemObj.Method = "GET";
            HttpItemObj.URL = string.Format("http://bbs.feng.com");
            HttpItemObj.Referer = "http://passport.feng.com/?r=user/login&sso%5Bjump%5D=http%3A%2F%2Fbbs.feng.com%2F&sso%5Bname%5D=%E5%A8%81%E9%94%8B%E8%AE%BA%E5%9D%9B&sso%5Bapps%5D=2&sso%5Bverify%5D=7a928982dd59b02a3024858bd61ccf22";
            HttpItemObj.Encoding = Encoding.UTF8;
            HttpItemObj.Allowautoredirect = true;
            HttpItemObj.Accept = "text/html, application/xhtml+xml, */*";
            HttpItemObj.ContentType = "application/x-www-form-urlencoded; charset=utf-8";
            HttpItemObj.UserAgent = "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; WOW64; Trident/6.0)";

            HttpItemObj.Header.Add("X-Requested-With", "XMLHttpRequest");
            HttpItemObj.Header.Add("Accept-Encoding", "gzip, deflate");
    
            HttpResultObj.Cookie = cookies;
            HttpResultObj = HttpHelperObj.GetHtml(HttpItemObj);
cookies = HttpResultObj.Cookie;
string strHtml = HttpResultObj.Html; //参考页面源码,还是未登录的状态



之后 在步骤3 之前又 加入一个get,这个get的ulr是 json数据后的 url,通过get此url后得到的cookie,  再次赋给 步骤3的cookie用,还是显示未登录



要疯了

希望高手帮帮忙呗,就是登录成功后,能到得到自己的信息就可以了




最佳答案

查看完整内容

你应该看看http://bbs.feng.com/api/uc.php?time=1427244953&code=58f1tITw10qtzFGgjn%2Bg9FqvVRiZVzIdM4ZiAgrTatWMuU5EdpjdLQM0XB1rQR9G%2Feukvx3TzpzmUXSEVjj16KSAj3TE7WXsQ6w6YCkQpt1b7BqQ7oCYzo7GiDCzfCYHkVZCu0oO57NAErXcV2H93XW9e7q4JpcDSjwqr497BBJt2r4yMs1gq8bqUhCa99YEogbVrmMvUTUG2fp4qb6nzFM5ebEfuyiKO1Ss2gRUyvOgfMfif4aBoav%2BFlx%2FsIv%2FDmBs4FPK2pnkf1w33KHUBt1wUhR19Vynk3qc465m4cG70I59PVN1KUiaGqoXWG80Py3PEBic ...


1. 开通SVIP会员,免费下载本站所有源码,不限次数据,不限时间
2. 加官方QQ群,加官方微信群获取更多资源和帮助
3. 找站长苏飞做网站、商城、CRM、小程序、App、爬虫相关、项目外包等点这里
发表于 2015-3-22 21:47:47 | 显示全部楼层
你应该看看http://bbs.feng.com/api/uc.php?time=1427244953&code=58f1tITw10qtzFGgjn%2Bg9FqvVRiZVzIdM4ZiAgrTatWMuU5EdpjdLQM0XB1rQR9G%2Feukvx3TzpzmUXSEVjj16KSAj3TE7WXsQ6w6YCkQpt1b7BqQ7oCYzo7GiDCzfCYHkVZCu0oO57NAErXcV2H93XW9e7q4JpcDSjwqr497BBJt2r4yMs1gq8bqUhCa99YEogbVrmMvUTUG2fp4qb6nzFM5ebEfuyiKO1Ss2gRUyvOgfMfif4aBoav%2BFlx%2FsIv%2FDmBs4FPK2pnkf1w33KHUBt1wUhR19Vynk3qc465m4cG70I59PVN1KUiaGqoXWG80Py3PEBicZiq9WaaTX3qryBNWz2IagUCUHF%2BVJ1GYr%2BEh2ZZlSd0ddNxDPnjq3xaGsCNY0l%2BsFaZ0PWHreyX4BrGCDEVXTTPIejpoH6quYAXucl1lc7uzcJJr6X4

这个是干什么的。成功之后应该需要访问一个这个链接。

还有成功之后的Cookie是这样的




仅仅是登录成功之后是这样的
PHPSESSID=5uurpklbat34bibd5e9kvppl66;pwd_token=deleted;passport_user_info=eyJ1c2VybmFtZSI6InN1ZmVpbmV0In0%3D;NSC_qbttqpsu.gfoh.dpn=ffffffffc3a0da7d45525d5f4f58455e445a4a423660;


而访问论坛需要的Cookie是这个


xIka_2132_saltkey=d1piiuZr; PHPSESSID=8f70d43523c70c9182b90650e96eaf88; xIka_2132_auth=7afevqIvv%2F1xDUtgrgT1vncfEQ4CjAKF1lVmDmrjdbDJQEB%2FxVcBrEtANcl%2Blxq5ULKV9voFJ5d0UV6D6J8LXmL2%2BLyZSw

这三个一个都不能少,找到这上面的两个Cookie是怎么生成的。 就可以实现了
回复

使用道具 举报

发表于 2015-3-22 22:32:25 | 显示全部楼层
估计还是Cookie未处理好。
回复

使用道具 举报

发表于 2015-3-22 23:14:46 | 显示全部楼层
cookie未绑上 我这里封装了一个自动绑定cookie的 可以联系我
回复

使用道具 举报

发表于 2015-3-23 08:39:50 | 显示全部楼层
HttpItemObj.ContentType = "application/x-www-form-urlencoded; charset=utf-8";

这个去了。

cookies;这个的值精简化一下。把里面多余的参数删除了。比如Path。Express什么的
回复

使用道具 举报

 楼主| 发表于 2015-3-23 10:21:40 | 显示全部楼层
站长苏飞 发表于 2015-3-23 08:39
HttpItemObj.ContentType = "application/x-www-form-urlencoded; charset=utf-8";

这个去了。

好的,我在试试,谢谢站长
回复

使用道具 举报

发表于 2015-3-24 15:52:49 | 显示全部楼层
cookie要累加上,不是替换,可能后面用到前面访问返回的cookie
回复

使用道具 举报

 楼主| 发表于 2015-3-24 22:02:53 | 显示全部楼层
站长苏飞 发表于 2015-3-23 08:39
HttpItemObj.ContentType = "application/x-www-form-urlencoded; charset=utf-8";

这个去了。

貌似还是不行呀,去掉contenType,反而登陆失败了。 好奇怪呀,到底是哪里出问题了呀,快被折磨死了
回复

使用道具 举报

 楼主| 发表于 2015-3-24 22:03:53 | 显示全部楼层
Loman源 发表于 2015-3-24 15:52
cookie要累加上,不是替换,可能后面用到前面访问返回的cookie

谢谢你的回复,也试过了,cookies +=前面返回的cookies ,还是提示未登陆
回复

使用道具 举报

发表于 2015-3-25 08:18:01 | 显示全部楼层
提供一个测试账户 密码吧。注册太麻烦了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 马上注册

本版积分规则

QQ|手机版|小黑屋|手机版|联系我们|关于我们|广告合作|苏飞论坛 ( 豫ICP备18043678号-2)

GMT+8, 2024-11-24 08:57

© 2014-2021

快速回复 返回顶部 返回列表