苏飞论坛

 找回密码
 马上注册

QQ登录

只需一步,快速开始

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

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

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

12
返回列表 发新帖
楼主: xiaotianbao

[其他] httphelper无法登录百度,求帮助。谢谢。

[复制链接]
发表于 2013-2-27 16:19:23 | 显示全部楼层
xiaotianbao 发表于 2013-2-27 16:10
我感觉是那个postdata里的token的问题,这个token值怎么取呢?

这个我真不清楚,我建议你网上SO一下有关百度登录的,这个应该有,我这里暂时没有资源


1. 开通SVIP会员,免费下载本站所有源码,不限次数据,不限时间
2. 加官方QQ群,加官方微信群获取更多资源和帮助
3. 找站长苏飞做网站、商城、CRM、小程序、App、爬虫相关、项目外包等点这里
 楼主| 发表于 2013-2-27 16:24:31 | 显示全部楼层
admin 发表于 2013-2-27 16:19
这个我真不清楚,我建议你网上SO一下有关百度登录的,这个应该有,我这里暂时没有资源
  1. GlbVars.cookie_baidu="";
  2.                 HttpWebRequest req = (HttpWebRequest)WebRequest.Create("https://passport.baidu.com/v2/api/?getapi&class=login&tpl=mn&tangram=true");
  3.                 HttpWebResponse resp = (HttpWebResponse)req.GetResponse();
  4.                 GlbVars.cookie_baidu += ParseSetCookie(resp.Headers[HttpResponseHeader.SetCookie]);
  5.                 req.Abort();
  6.                 resp.Close();

  7.                 req = (HttpWebRequest)WebRequest.Create("https://passport.baidu.com/v2/api/?getapi&class=login&tpl=mn&tangram=true");
  8.                 req.Headers[HttpRequestHeader.Cookie] = GlbVars.cookie_baidu;
  9.                 resp = (HttpWebResponse)req.GetResponse();
  10.                 StreamReader sr = new StreamReader(resp.GetResponseStream());
  11.                 string token = "";
  12.                 while (sr.Peek() > -1)
  13.                 {
  14.                     string line = sr.ReadLine();
  15.                     if (line.Contains("token="))
  16.                     {
  17.                         token = GlbVars.CutBetween(line, "bdPass.api.params.login_token=\'", "\';");
  18.                         break;
  19.                     }
  20.                 }
  21.                 sr.Close();
  22.                 req.Abort();
  23.                 resp.Close();
复制代码
这是别人的部分代码。看他的意思是在这个流里会有。
我写了下面的,但是没有token=xxxx
  1. item.URL = "https://passport.baidu.com/v2/api/?getapi&class=login&tpl=mn&tangram=true";
  2.                     item.Method = "GET";
  3.                     item.Encoding = "utf-8";
  4.                     item.ContentType = "application/x-www-form-urlencoded";
  5.                     item.UserAgent = "Mozilla/5.0 (Windows NT 5.1; rv:18.0) Gecko/20100101 Firefox/18.0";
  6.                     item.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";
  7.                     item.Allowautoredirect = true;

  8.                     HttpResult result_t = http.GetHtml(item);

  9.                     HttpWebRequest req = (HttpWebRequest)WebRequest.Create("https://passport.baidu.com/v2/api/?getapi&class=login&tpl=mn&tangram=true");
  10.                     HttpWebResponse resp = (HttpWebResponse)req.GetResponse();
  11.                     req.Headers[HttpRequestHeader.Cookie] = result_t.Cookie;
  12.                     resp = (HttpWebResponse)req.GetResponse();
  13.                     StreamReader sr = new StreamReader(resp.GetResponseStream());
  14.                     string token = "";
  15.                     while (sr.Peek() > -1)
  16.                     {
  17.                         string line = sr.ReadLine();
  18.                         if (line.Contains("token="))
  19.                         {
  20.                             Match mv = Regex.Match(line, "bdPass.api.params.login_token=\'(.+?)"\';");
  21.                             token = mv.Result("$1");
  22.                             break;
  23.                         }
  24.                     }
  25.                     sr.Close();
  26.                     req.Abort();
  27.                     resp.Close();
复制代码
另外,有人也做百度登录,他是这么说的:

get百度首页获取BAIDUID 的cookie
贴吧登录需要 BAIDUID 的cookie
得到cookie后get https://passport.baidu.com/v2/ap ... b&tangram=false
获取token

username
password
token
ppui_logintime---随便填数字
staticpage-----https%3A%2F%2Fpassport.baidu.com%2Fv2Jump.html
charset------gb2312
codestring---空
isPhone-----false
index-------0
loginType-------1
tpl-------tb//必须和上面链接中tpl值一样
callback----parent.bdPass.api.loginLite._submitCallBack
verifycode----空
mem_pass-------on

//记住cookie中的BAIDUID要携带post过去
POST以上数据到https://passport.baidu.com/v2/api/?login

就能得到BDUSScookie


综合上面的代码和另一个人的说法,能帮我看下吗。这个token应该怎么搞定。
您需要登录后才可以回帖 登录 | 马上注册

本版积分规则

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

GMT+8, 2024-12-26 04:25

© 2014-2021

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