有空就分析了下百度的登陆协议。

大家看代码:

size_t CURLWriteDataCallbak(char *data, size_t size, size_t nmemb, string *writerData)
{if (writerData == NULL)  return 0; size_t len = size*nmemb;  writerData->append(data, len);  return len; }void MsgCookie(CURL *curl)
{CURLcode cookieRes;struct curl_slist *cookies;struct curl_slist *nc;int i;cookieRes = curl_easy_getinfo(curl, CURLINFO_COOKIELIST, &cookies);if (cookieRes != CURLE_OK) {::MessageBox(NULL,"err get cookie!","",0);return ;}nc = cookies, i = 1;CStdioFile f;//f.Open("c:\\cookie.txt",CFile::modeCreate|// CFile::modeNoTruncate|CFile::modeWrite);while (nc){::MessageBox(NULL,nc->data,"",0);//f.WriteString(nc->data);//f.WriteString("\n");nc = nc->next;i++;}//f.Close();::MessageBox(NULL,"ok","",0);if (i == 1){::MessageBox(NULL,"read cookie err\n","",0);}curl_slist_free_all(cookies);}

//主要思路是,先登陆百度首页,然后登陆百度空间,为啥不直接登陆百度空间等会大家看下面(当然大家可以登陆百度首页后可以直接访问百度其他的产品!!嘿嘿)

void CassssssssssssDlg::OnBnClickedButton1()
{// TODO: 在此添加控件通知处理程序代码CURL *curl;CURLcode res;string url="http://www.baidu.com/";string urlRetStr;string baiduid;string bdu;string token="token=";curl_global_init(CURL_GLOBAL_ALL);curl = curl_easy_init();if (curl){//第一步:获取BAIDUID   get BIADUIDcurl_easy_setopt(curl,CURLOPT_URL,url);curl_easy_setopt(curl,CURLOPT_VERBOSE,1L);curl_easy_setopt(curl,CURLOPT_COOKIEFILE,"baiducookie");//要保存cookie哦,一次保存以后libcurl会自己维护cookie的curl_easy_setopt(curl,CURLOPT_WRITEDATA,&urlRetStr);curl_easy_setopt(curl,CURLOPT_WRITEFUNCTION,CURLWriteDataCallbak);//回调函数res=curl_easy_perform(curl);if (res!=CURLE_OK){MessageBox("err get www.baidu.comfor baiduid");}//第二步 get token,主要通过返回cookie里面的BAIDUID来获取tokenurlRetStr="";curl_easy_setopt(curl,CURLOPT_URL,"https://passport.baidu.com/v2/ap""i/?getapi&class=login&tpl=mn&tangram=true");res = curl_easy_perform(curl);if (res!=CURLE_OK){MessageBox("err get token");}int i = urlRetStr.find("token=")+7;int n = urlRetStr.find("';",i);token += urlRetStr.substr(i,n-i);//第三步在百度首页登陆时候当密码框获得焦点会进行check 验证码curl_easy_setopt(curl,CURLOPT_URL,"https://passport.baidu.com/v2/ap""i/?getapi&class=login&tpl=mn&tangram=true");//add token to cookieres = curl_easy_perform(curl);if (res!=CURLE_OK){MessageBox("err get check 验证码 status");}//第四步 检测账号是否正常 主要是啥异地登陆的 codestring callbak checkurlRetStr = "";curl_easy_setopt(curl,CURLOPT_URL,"https://passport.baidu.co""m/v2/api/?logincheck&callback=bdPass.api.login._needCode""stringCheckCallback&tpl=mn&charset=utf-8&index=0&username""=这里是你的账号&time=1350284309109");//add token to cookieres = curl_easy_perform(curl);if (res!=CURLE_OK){MessageBox("err get check 验证码 status");}//MessageBox(urlRetStr.c_str());//第五步 进行post loginurlRetStr = "";string fed = "ppui_logintime=507578&charset=utf-8&""codestring=&"+token+"&isPhone=false&index=0&u=&safeflg=0&staticpage=http%3""A%2F%2Fwww.baidu.com%2Fcache%2Fuser%2Fhtml%2Fjump.html&loginType=1&tpl=mn&""callback=parent.bdPass.api.login._postCallback&username=你的账号&password=""你的密码&verifycode=&mem_pass=on";curl_easy_setopt(curl,CURLOPT_URL,"https://passport.baidu.com/v2/api/?login");curl_easy_setopt(curl,CURLOPT_POSTFIELDS,fed.c_str());//这里是post的字段curl_easy_setopt(curl,CURLOPT_REFERER,"http://www.baidu.com/cache/user/html/login-1.2.html");res = curl_easy_perform(curl);if (res!=CURLE_OK){MessageBox("err post login");}//第六步 返回的一个网页值 我们必须要替换里面的%号位%25,这里我们找到hao123Param值,这里他会访问这个其实我也不知道干啥他i=urlRetStr.find("http://www");n=urlRetStr.find("');",i);urlRetStr=urlRetStr.substr(i,n-i);i=urlRetStr.find("hao123Param=")+12;bdu=urlRetStr.substr(i);CString tmp=urlRetStr.c_str();tmp.Replace("%","%25");//MsgCookie(curl);//jumpurlRetStr = "";curl_easy_setopt(curl,CURLOPT_URL,tmp);curl_easy_setopt(curl,CURLOPT_POST,0L);//因为前面的是post,这里我们改成getres = curl_easy_perform(curl);if (res!=CURLE_OK){MessageBox("err get check 验证码 status");}//MessageBox(urlRetStr.c_str());//crossdomain chek//第七步,crossdomain检测urlRetStr = "";url ="http://user.hao123.com/static/crossdomain.php?bdu="+bdu+"&t=0.05889427157399846";curl_easy_setopt(curl,CURLOPT_URL,url);//curl_easy_setopt(curl,CURLOPT_COOKIEFILE,"newcookie");res = curl_easy_perform(curl);if (res!=CURLE_OK){MessageBox("err get check 验证码 status");}//最后一步,前面的所有都好了,我们可以随意访问百度的产品了,嘿嘿 all good then goto www.baidu.comurlRetStr = "";curl_easy_setopt(curl,CURLOPT_URL,"http://hi.baidu.com/new/guhuisec");curl_easy_setopt(curl,CURLOPT_REFERER,"http://www.xiaoming.com");res = curl_easy_perform(curl);if (res!=CURLE_OK){MessageBox("err get check 验证码 status");}//MessageBox(urlRetStr.c_str());CStdioFile f;f.Open("c:\\htm.txt",CFile::modeCreate|CFile::modeNoTruncate|CFile::modeWrite);f.WriteString(urlRetStr.c_str());f.Close();MessageBox("ok");curl_easy_cleanup(curl);}curl_global_cleanup();
}

在此我分享下我的那个百度空间登录代码,没有写完,最主要的是最后一步我不会js,最后百度空间的跨域检测!!如果有大牛知道请告诉小弟!

void CassssssssssssDlg::OnBnClickedButton1()
{// TODO: 在此添加控件通知处理程序代码CString baiduUid;CString token;CURL *curl;CURLcode res;string strPage;CString callBakUrlStr;curl_global_init(CURL_GLOBAL_ALL);curl = curl_easy_init();if(curl) {curl_easy_setopt(curl, CURLOPT_URL, "http://hi.baidu.com/go/login");curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L);//初始化cookie引擎curl_easy_setopt(curl, CURLOPT_COOKIEFILE,"cookiesfile"); curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, CURLWriteDataCallbak);    curl_easy_setopt(curl, CURLOPT_WRITEDATA, &strPage);  res = curl_easy_perform(curl);if(res != CURLE_OK)fprintf(stderr, "curl_easy_perform() failed: %s\n",curl_easy_strerror(res));//get tokenstrPage="";curl_easy_setopt(curl, CURLOPT_URL, "https://passport.baidu.c""om/v2/api/?getapi&class=login&tpl=qing");res = curl_easy_perform(curl);if(res == CURLE_OK){token=strPage.c_str();int index=token.Find("login_token=")+13;token=token.Mid(index,32);}strPage="";//post login string fed="charset=UTF-8&codestring=&token="+token+"&isPhone=false&index=0&u=http%3A%2F%2Fhi.baidu.com%2Fgo%2Flo""gin%3Ffrom_page%3D101%26from_mod%3D0&safeflag=0&staticpag""e=http%3A%2F%2Fhi.baidu.com%2Fcom%2Fshow%2Fproxy%3Ffun%3Dcal""lback.login.submited&loginType=1&tpl=qing&username=账号&pas""sword=密码&verifycode=&mem_pass=on";curl_easy_setopt(curl, CURLOPT_URL, "https://passport.baidu.com/v2/api/?login");curl_easy_setopt(curl,CURLOPT_REFERER,"http://hi.baidu.com/go/login");curl_easy_setopt(curl, CURLOPT_POSTFIELDS, fed.c_str());curl_easy_setopt(curl,CURLOPT_FOLLOWLOCATION,1L);res = curl_easy_perform(curl);if(res != CURLE_OK){MessageBox("err to get callbakurl");return;}callBakUrlStr=strPage.c_str();int index=callBakUrlStr.Find("http://hi.baidu.com");int endindex=callBakUrlStr.Find("');",index);callBakUrlStr = callBakUrlStr.Mid(index,endindex-index);//MessageBox(callBakUrlStr);curl_easy_setopt(curl, CURLOPT_URL, callBakUrlStr);res = curl_easy_perform(curl);if(res != CURLE_OK){MessageBox("err to get callbakurl");return;}strPage=strPage.c_str();//CString url="http://hi.baidu.com/com/show/proxy?fun=callback.login.submited&error=0&callback=&index=0&username=guhuisec&phonenumber=电话号码&mail=邮箱@qq.com&tpl=qing&u=http%253A%252F%252Fhi.baidu.com%252Fgo%252Flogin%253Ffrom_page%253D101%2526from_mod%253D0&needToModifyPassword=0&auth=56731c258b7df9911219e221b96ab5342dca5705d3ce7edd922c03338bdd3c8f57b7fecc8da0&hao123Param=alpQVFdsT2RsQllTRzFSVFV4WExVSkRWR0V6WWtkVWMwOUJTWGx4VkdrdGVFZHNVamQ2VFRKdUxWbC1WMDVTUVZGQlFVRkJKQ1FBQUFBQUFBQUFBQW9hSmh1MUt6NGtaM1ZvZFdselpXTUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDQVlJQXJNQUFBQU0CcXBYY0FBQUFBZUdsREFBQUFBQUF4TUM0eU15NHlOSml2ZGxDWXIzWlFk";int a=callBakUrlStr.Replace("%","%25");MessageBox(callBakUrlStr);curl_easy_setopt(curl, CURLOPT_URL, callBakUrlStr);//curl_easy_setopt(curl,CURLOPT_COOKIELIST,"domain=.hi.baidu.com");curl_easy_setopt(curl,CURLOPT_FOLLOWLOCATION,1L);res = curl_easy_perform(curl);//MessageBox("ok");if(res != CURLE_OK){MessageBox("err to get callbakurl");return;}strPage=strPage.c_str();MessageBox(strPage.c_str());//go homecurl_easy_setopt(curl, CURLOPT_URL, "http://hi.baidu.com/go/login");//curl_easy_setopt(curl,CURLOPT_COOKIELIST,"domain=.hi.baidu.com");curl_easy_setopt(curl,CURLOPT_FOLLOWLOCATION,1L);res = curl_easy_perform(curl);//MessageBox("ok");if(res != CURLE_OK){MessageBox("err to get callbakurl");return;}strPage=strPage.c_str();MessageBox(strPage.c_str());curl_easy_cleanup(curl);}curl_global_cleanup();
}

百度登陆协议分析!!!用libcurl来模拟百度登陆相关推荐

  1. qq2007登陆协议分析

    一. 登陆touch包- 发送60 bytes 02 11 1b 版本号 00 91 命令字 22 20 包序号 31 d1 a7 26 QQ号: 835823398 b2 ed 76 5b 9c b ...

  2. 百度统计高级分析工具使用方法,百度统计高级分析工具的功能有哪些

    百度统计普遍使用的网站类型有,PC网站.手机站.wap站等,需要在统计的网站页面上安装百度统计JS代码. 百度统计高级分析工具使用方法 1.登录已经关联站点的百度统计账号. 2.点击高级分析-实时分析 ...

  3. QQ空间登陆协议分析-2014年8月

    在做此工程之前当然也是参考了网上各位前辈的分析原理,最后实际上是分析很简单,但是代码的实现让我着实犯难,毕竟作MFC还没有实际开发过什么项目,敲代码的经验,水平都不是很好,不过最后还是花了一周的时间把 ...

  4. 网络协议分析与仿真课程设计报告:网络流量分析与协议模拟

    公众号:CS阿吉 网络协议分析与仿真课程设计报告  题  目:网络流量分析与协议模拟 专业名称:         网络工程 班    级: 学生姓名:           阿吉 学号(8位): 指导教 ...

  5. python模拟seo_百度统计原理分析-利用Python实现模拟访问

    国内大多数站长可能都在用百度统计.统计的使用方法也很简单,只要在需要统计的页面底部加上统计代码即可.然后打开百度统计的后台,就能看到访客信息,包括入口页面,停留时间,跳出率等等,很是方便. 使用当然是 ...

  6. MSN协议分析以及Java实现MSN登陆

    一.MSN协议分析部分 1.1 基本介绍 MSN是微软推出的IM工具,他的通信协议是微软自己提出的MSNP(即MSN Protocol).当前MSN协议最高版本为MSNP18,但可获取的资料很少.这里 ...

  7. 宅男抖音某猫协议分析及应用破解

    " 分析传说中的快x,顺便提供破VIP线路及去启动广告方法." 在当今这个由应用市场主导的网络上,流传着一批应用,它们低调又神秘,依赖口碑与独立网站在地下渠道传播,应用市场中从来都 ...

  8. winform模拟登陆网页_【教程】模拟登陆网站 之 C#版(内含两种版本的完整的可运行的代码)...

    之前已经介绍过了网络相关的一些基础知识了: 以及简单的网页内容抓取,用C#是如何实现的: 现在接着来介绍,以模拟登陆百度首页: 为例,说明如何通过C#模拟登陆网站. 不过,此处需要介绍一下此文前提: ...

  9. QQ协议分析及其还原(二)

    http://www.iprotocolsec.com/2012/02/28/qq%E5%8D%8F%E8%AE%AE%E5%88%86%E6%9E%90%E5%8F%8A%E5%85%B6%E8%B ...

最新文章

  1. oracle的日志分析工具,oracle日志分析工具LogMiner使用(实战)
  2. 【.Net Micro Framework PortingKit - 08】GPIO驱动
  3. 启明云端分享| 继ESP32-S3点屏480*480分辨率的2.1寸屏后,目前在8ms平台又发布了480*480分辨率的4寸屏、480*272分辨率的4.3寸屏、800*480分辨率的4.3寸屏SDK
  4. TypeError: atlas.getSpriteFrame is not a function
  5. 计算机拼图形 比创意教案,拼图形比创意教学设计.doc
  6. 利用计算机管理分区,win7增加磁盘分区教学 利用磁盘管理增加分区
  7. Scala的初步学习(一)
  8. wps如何自己制作流程图_WPS如何绘制流程图? WPS绘图流程图详细教程
  9. matlab微带带通滤波器,带通滤波器的ADS仿真设计
  10. oracle 新增配额,Oracle 用户配额
  11. 【linux】正点原子linux教程学习
  12. yd什么意思_excel中yd是什么意思
  13. 网上得到的一个3D渲染引擎
  14. 介绍 json_介绍
  15. 钢笔工具使用目前的最高水平
  16. linux服务器cpu飙高问题排查实践记录
  17. BLE蓝牙的广播类型
  18. 英语六级口语 计算机,2020年5月英语六级口语惯用口语:计算机
  19. 妥妥的去面试之数据结构与算法(一)
  20. Petri网描述语言

热门文章

  1. 计算机专业自我认知swot,计算机专业自我认知.doc
  2. IE浏览器提示无法安全地连接到此页面,这可能是因为该站点使用过期的或不安全的 TLS 安全设置.该如何解决?
  3. 阿里云 数加 · DataWorks 数据同步
  4. 1 php方式实现购物车原理,PHP购物车实现的原理
  5. kubernetes存储:local,openEBS,rook ceph
  6. P2327 [SCOI2005]扫雷 - 模拟
  7. 15K服务器硬盘对齐分数,服务器硬盘的IOPS计算方法
  8. 杭州电子科技大学计算机录取分数线,杭州电子科技大学历年录取分数线多少及各省最低投档线统计表...
  9. ASF文件格式之Objects与Guid总结
  10. matlab的round函数是什么意思,Oracle round函数是什么意思?怎么运用?