开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 7883|回复: 5
收起左侧

[C#相关工具] 晒晒 C# 通过调用 Wininet.dll 登录百度成功

[复制链接]
结帖率:0% (0/1)
发表于 2014-2-15 17:09:07 | 显示全部楼层 |阅读模式   广东省深圳市
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. using ApiWinHttp;
  7. namespace baidu
  8. {
  9. class LoginBaidu
  10. {
  11. WinInetHttp inetHttp;
  12. TimeHelper time;
  13. private string _Url { get; set; }
  14. public LoginBaidu()
  15. {
  16. inetHttp = new WinInetHttp();
  17. time = new TimeHelper();
  18. }
  19. /// <summary>
  20. /// 获取 callback 值
  21. /// </summary>
  22. /// <returns></returns>
  23. public string Getcallback()
  24. {
  25. JavaScript myjs = new JavaScript(ScriptLanguage1.JavaScript);
  26. return myjs.Eval("fuckall()", " function fuckall() { return Math.floor(Math.random() * 2147483648).toString(36); }");
  27. }
  28. /// <summary>
  29. /// 访问网页 并返回网页源码 失败返回空
  30. /// </summary>
  31. /// <param name="url"></param>
  32. /// <returns></returns>
  33. public string Login(string url)
  34. {
  35. if( inetHttp.HttpRequest(url) != "true")
  36. {
  37. return "";
  38. }
  39. return inetHttp.GetHtml();
  40. }
  41. /// <summary>
  42. /// 获取头部信息
  43. /// </summary>
  44. /// <returns></returns>
  45. public string GetHeader()
  46. {
  47. return inetHttp.GetHttpQueryInfo();
  48. }

  49. public string _token { get; set; }
  50. /// <summary>
  51. /// 获取 token 值
  52. /// </summary>
  53. /// <returns></returns>
  54. public string GetTokenValue()
  55. {
  56. string url = "https://passport.baidu.com/v2/api/?getapi&tpl=mn&apiver=v3&tt=" + time.GetExistingTime() + "&class=login&logintype=dialogLogin&callback=bd__cbs__" + this.Getcallback() + "";
  57. string res = this.Login(url);
  58. if (string.IsNullOrWhiteSpace(res))
  59. {
  60. return "";
  61. }
  62. string t = Stringoperation.Between(res, "(", ")");
  63. Newtonsoft.Json.Linq.JObject jobe = Newtonsoft.Json.Linq.JObject.Parse(t);
  64. string jo = jobe["data"]["token"].ToString(); //Songs字符串下 的数组中 第0个 SongLength 的值
  65. if (string.IsNullOrWhiteSpace(jo))
  66. {
  67. return "";
  68. }
  69. return jo;
  70. }
  71. /// <summary>
  72. /// 通过 token 值 获取 UBI cookie
  73. /// </summary>
  74. /// <returns>返回 0 就是没出错,否则出错</returns>
  75. public string GetCookieUBI()
  76. {
  77. string url = "https://passport.baidu.com/v2/api/?loginhistory&token=" + _token + "&tpl=mn&apiver=v3&tt=" + time.GetExistingTime() + "&callback=bd__cbs__" + this.Getcallback() + "";
  78. string res = this.Login(url);
  79. if (string.IsNullOrWhiteSpace(res))
  80. {
  81. return "";
  82. }
  83. string t = Stringoperation.Between(res, "(", ")");
  84. Newtonsoft.Json.Linq.JObject jobe = Newtonsoft.Json.Linq.JObject.Parse(t);
  85. string jo = jobe["errInfo"]["no"].ToString(); //Songs字符串下 的数组中 第0个 SongLength 的值
  86. if (string.IsNullOrWhiteSpace(jo))
  87. {
  88. return "";
  89. }
  90. return jo;
  91. }

  92. /// <summary>
  93. /// 判断是否需要验证码,是在离开用户名框,发送的
  94. /// </summary>
  95. /// <returns>返回 “false” 表示不需要验证码 ,"true" 表示需要验证码,返回其他表示出错了。。</returns>
  96. public string IsCodeString(out string CondeString,string user)
  97. {
  98. CondeString = string.Empty;
  99. string url = "https://passport.baidu.com/v2/api/?logincheck&token=" + _token + "&tpl=mn&apiver=v3&tt=" + time.GetExistingTime() + "&username=" + user + "&isphone=false&callback=bd__cbs__" + this.Getcallback() + "";
  100. string res = this.Login(url);
  101. if (string.IsNullOrWhiteSpace(res))
  102. {
  103. return "访问判断验证码失败!!!!!!!!!!!!!!!";
  104. }
  105. string t = Stringoperation.Between(res, "(", ")");
  106. Newtonsoft.Json.Linq.JObject jobe = Newtonsoft.Json.Linq.JObject.Parse(t);
  107. string jo = jobe["errInfo"]["no"].ToString();
  108. if (string.IsNullOrWhiteSpace(jo)) //不等于空,就表示,获取到网页源码
  109. {
  110. return "访问出错!!!!!!!!!";
  111. }
  112. if (jo == "0") //== 0 表示 网页没有出错
  113. {
  114. jobe = Newtonsoft.Json.Linq.JObject.Parse(t);
  115. jo = jobe["data"]["codeString"].ToString();
  116. if (string.IsNullOrWhiteSpace(jo)) //验证码为空就表示 不需要验证码
  117. {
  118. return "false"; // false 表示不需要验证码
  119. }
  120. string codeString = jobe["data"]["codeString"].ToString();
  121. if (string.IsNullOrWhiteSpace(codeString))
  122. {
  123. return "验证码参数为空!!!!!!";
  124. }
  125. CondeString = codeString + "|" + jobe["data"]["vcodetype"].ToString();
  126. return "true";
  127. }
  128. return "出错了!!!!!!!!!";
  129. }
  130. /// <summary>
  131. /// 获取 验证码 图片
  132. /// </summary>
  133. /// <param name="codestring"></param>
  134. public System.Drawing.Image GetCodeImg(string codestring)
  135. {
  136. string url = "https://passport.baidu.com/cgi-bin/genimage?" + codestring + "";
  137. string res = this.Login(url);
  138. if (string.IsNullOrWhiteSpace(res))
  139. {
  140. return null;
  141. }
  142. return inetHttp.GetHtmlImage();
  143. }

  144. /// <summary>
  145. /// POST登录 失败返回 "false"
  146. /// </summary>
  147. /// <param name="user">用户名</param>
  148. /// <param name="passwrd">密码</param>
  149. /// <param name="codestring">验证码参数 默认为空</param>
  150. /// <param name="Vcode">验证码 默认为空</param>
  151. /// <returns></returns>
  152. public string PostLogin(string user,string passwrd,string codestring = "",string Vcode="")
  153. {
  154. string url = "https://passport.baidu.com/v2/api/?login";
  155. //inetHttp.SetRequestHeaders("Referer", "http://www.baidu.com/");
  156. string postData = "staticpage=http%3A%2F%2Fwww.baidu.com%2Fcache%2Fuser%2Fhtml%2Fv3Jump.html&charset=utf-8&token="+_token+"&tpl=mn&apiver=v3&tt="+time.GetExistingTime()+"&codestring="+codestring+"&safeflg=0&u=http%3A%2F%2Fwww.baidu.com%2F&isPhone=false&quick_user=0&loginmerge=true&logintype=dialogLogin&splogin=rate&username="+user+"&password="+passwrd+"&verifycode="+Vcode+"&mem_pass=on&ppui_logintime=7053&callback=parent.bd__pcbs__"+this.Getcallback()+"";
  157. string res = inetHttp.HttpRequest(url, "POST", "", postData);
  158. if (res != "true")
  159. {
  160. return res + "false";
  161. }
  162. return inetHttp.GetHttpQueryInfo();
  163. }

  164. public string GetHtml()
  165. {
  166. return inetHttp.GetHtml();
  167. }

  168. }
  169. }
复制代码
QQ截图20140215170823.png
发表于 2016-9-14 18:28:49 | 显示全部楼层   上海市上海市
楼主,求源码
回复 支持 反对

使用道具 举报

结帖率:100% (1/1)
发表于 2016-8-13 16:13:40 | 显示全部楼层   四川省成都市
求源码啊 楼主
回复 支持 反对

使用道具 举报

结帖率:100% (1/1)
发表于 2015-8-20 16:04:53 | 显示全部楼层   **
想要楼主的类
回复 支持 反对

使用道具 举报

结帖率:33% (1/3)
发表于 2015-8-20 16:01:27 | 显示全部楼层   湖南省长沙市
................
回复 支持 反对

使用道具 举报

结帖率:100% (2/2)
发表于 2014-3-1 02:04:44 | 显示全部楼层   山东省泰安市
按钮好看~
回复 支持 反对

使用道具 举报

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

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 793400750,邮箱:wp@125.la
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

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