C#模拟百度登录并到指定网站评论回帖(五)
前面的四篇已经说完了全部的模拟百度登录,接下来就是到指定的网站去发表评论,当然你也可能是获取其他信息,其实这些套路都是万变不离其宗的,弄懂之后觉得像这种请求-响应获取信息的功能实在很简单(想起当初走的弯路,真是太心酸了)
今天的详细评论过程就不多说了,这里就指出一下我在写这个功能的时候遭遇的问题,也正是这些问题导致陷入了困境。(主要是理论,有不懂的童鞋欢迎评论交流)
第一个问题:如果使用的百度登录网站,那么前面我们获取到BDUSS之后,到这里就要发生转换。因为我访问的网页,在访问主页的时候会通过BDUSS去继续请求,获得一个该网站的新BDUSS,这就说明,前面搞了那么多功夫咱们其实也就只拿到了一条钥匙罢了。要想打开信息之门,还需要我们再去打开其他的门。
那这里要说的还是——逻辑分析,这个太重要了,进入新网站之后我们需要重新进行分析,找到主要的请求响应页,有时候网页会发生多次跳转,信息也会跟着变化。如果真要完全模拟的话 ,我们要做的功夫就会很多,所以这里我们只要找出那些有我们需要的信息的请求响应页就可以了。
比如说我要获得网站自己的BUDSS,那么就联系前后内容,看看哪个页面用到新的BUDSS,然后再追溯回头,慢慢排除,直到找到响应哪个BDUSS的页面。这个过程就是考验耐心跟细心的了跟其他没有啥关系。
那第二个问题:就是Cookie!这个跟前面的一个要素是确定功能是否能够顺利实现的绝对条件,没有这两个,代码写多少都是错!
所以,到新网站的时候,一定要分析有哪些新的Cookie,然后把他们全都收集起来。我就是在写评论功能的时候,获取网站的验证码,虽然能拿到,但总是发生错误,这就是没有拿到sessionID跟cookie的后果。请求网页的验证码,必须要这两个东西,如果你看到自己的错了,那么就看看cookie收集器里面有没有这些值!因为网站要识别你是不是同一个人拿的验证码然后提交,看得就是sessionID,所以必须有这个值。
下面是具体的实现代码:这里大家不用了解太深,只需要知道下面的代码就是不停的请求不同的页面,然后获取响应,直到把请求验证码页面需要的cookie和参数都获取完全了,再发起请求。值的注意的是,每个页面之间有一定的逻辑性,中间跳过了一些不必要的页面,所以大家在分析的时候要认真。
/// <summary>
/// 封装的获取评论页面验证码
/// </summary>
public void GetCommentCode(string bookID, string bookLink, HttpHelper helper, PictureBox pictureBox)
{
string corrssmain_do_Getbudss = string.Format("http://passport.zongheng.com/bdpass/crossdomain.do?bdu={0}&t={1}", "MW5RMkpwVjJWSlNtZDFiRTlYTFVsMllYbHVUSGd3VTFwbFJrMUpXVXRCYURWdExTMVlhMmt6VEg1TGFHUlhRVkZCUVVGQkpDUUFBQUFBQUFBQUFBRUFBQUJGMjVjc3U2alQ2czdVelAyN3FOUHFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFQLWQ3MVh+bmU5VmFr", Utility.GetTimeStamp());
string url_maindo = string.Format("http://passport.zongheng.com/pcLogin/main.do?_t={0}&source=0&bduss={1}&location={2}", Utility.GetTimeStamp(), "KJBRdxvy560zXPcYv0F0AG8JYzkmgGDuRCI7IbDJSriNuXDHx19o~m98AjZ7S0JkqCIE4RdROE~L619B2jMrePdR6tVWXDWFkv4G67lNk89egiTeU8TMRviPQteRtH7ujGE09bLNvOLsTEp9QTKAe~MrWqD9wN7JReLd*YgwzOEXEbT3R8KsUBJvEf3KeZ4vKDOJdCC1yUIg*XdaexZ6hHPNZndvfNGQud3aCgCEnZypWEBYqXIFbiw*IrhLs9BcEds2FP1ox8ixyPC0XpvvOpAhMe6HsOM1b5jTJExoOnT0c17oeLswmhM3lP0~wLhAhy~Sq0dTs9KM7T84YJKZPA==", Utility.UrlDecode("http%3A%2F%2Fwww.zongheng.com%2F"));
string url_getSession = string.Format("http://book.zongheng.com/ajax/book.comment.getThreadL1st2.do");//这个页面是响应sessionID的
string postData_Session = string.Format("bookId={0}&pagebar=0&pageNum=1&pageSize=30", bookID);
helper.GetPageResponse_Get(corrssmain_do_Getbudss, Utility.UrlDecode("http://passport.zongheng.com/?location=http%3A%2F%2Fwww.zongheng.com%2F"), "image/png,image/*;q=0.8,*/*;q=0.5");//请求页面获取cookie
helper.GetPageResponse_Get(url_maindo, Utility.UrlDecode(bookLink), "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8");//请求页面获取cookie
helper.GetPageResponse_Post(url_getSession, postData_Session, bookLink);//获取sessinID
//所有的cookie都收集完后,开始请求验证码
Bitmap bp = helper.GetCode(string.Format("http://passport.zongheng.com/imgcapt?r={0}", Utility.GetTimeStamp()), bookLink);
pictureBox.Image = bp;
}
#endregion
好了,这个项目的所有功能到这里就说完了,有什么问题欢迎评论交流
C#模拟百度登录并到指定网站评论回帖(五)的更多相关文章
- C#模拟百度登录并到指定网站评论回帖(一)
核心信息: 请求网址: https://passport.baidu.com/v2/api/?login请求方法: POST状态码: HTTP/1.1 200 OK请求头 //用户代理 Use ...
- C#模拟百度登录并到指定网站评论回帖(二)
序言: 回归正题:前面讲到的抓包分析的数据,是模拟登录要获得得必要信息(当然有些也不是必要的...我只是都列举出来这样有个对比)如果说,有哪个英文字母不知道什么意思的,可以问一下度娘,有不少前辈都发过 ...
- C#模拟百度登录并到指定网站评论回帖(三)
上次说到怎么获取BAIDUID,这个相信很多人都能够拿到就不多说了,今天一连说两个,获取token和raskey 2.利用以上获得的cookie直接访问页面 https://passport.baid ...
- C#模拟百度登录并到指定网站评论回帖(四)
基本的实现功能前面已经全部讲完,基本上可以复制黏贴完成登录百度的过程了 今天的这一贴就说说怎么获取百度的验证码 内容回顾:还记得前面第一贴说的如果登录发生异常,百度会发回2个值吗?是的,就是codeT ...
- POST模拟百度登录和自动发帖
这里用HttpClient发包模拟百度登录和发帖,验证码部分采用机器下载人工识别. 登陆百度的原理:1. 访问https://passport.baidu.com/v2/api/?getapi& ...
- C#模拟百度登录
目录: 1.fiddler解析百度登录地址 2.处理传入参数 1.fiddler解析百度登录地址 因工作需要,所以研究了下百度的登陆.首先打开https://passport.baidu.com/v2 ...
- go 语言模拟百度登录
1.参考网上Python的例子自己写了一个go语言的.这个仅供学习技术参考,为了方便有部分参数直接phantomjs执行js获取,代码基本都有注释,测试打印没有删除,还请见谅! 2.本文参考http: ...
- 通过winform+模拟登录实现快速一键登录到人才招聘网站
之前为了便于人事部门招聘登录网站更简洁高效,免去每天频繁输网址.用户名.密码等相关登录信息,特基于winform+HttpWebRequest实现模拟请求登录,最终达到一键登录到招聘网站后台的效果. ...
- C# 利用 HttpWebRequest 和 HttpWebResponse 模拟登录有验证码的网站
原文:C# 利用 HttpWebRequest 和 HttpWebResponse 模拟登录有验证码的网站 我们经常会碰到需要程序模拟登录一个网站,那如果网站需要填写验证码的要怎样模拟登录呢?这篇文章 ...
随机推荐
- MYSQL 时间数据类型
- hbase definitive guide 笔记
ext3 file system 优化 ext3 在用在hbase上可以做如下优化: 1. mount的时候加上noatime选项.这可以减少管理开销 2. 用命令tune2fs -m 0 /dev/ ...
- 使用Post方法模拟登陆爬取网页(转)
使用Post方法模拟登陆爬取网页 最近弄爬虫,遇到的一个问题就是如何使用post方法模拟登陆爬取网页.下面是极简版的代码: import java.io.BufferedReader; impor ...
- Erlang 又生虫了
好久不玩Erlang了.近期想鼓捣Eresye,下了个最新版OTP 17,结果.发现了问题. 安装这个最新版的Erlang (erl 6.0)后,用erlc编译了Eresye 1.2.5,并放入其li ...
- hdu oj 3127 WHUgirls(2009 Asia Wuhan Regional Contest Online)
WHUgirls Time Limit: 3000/2000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others) Total ...
- Wps 2013 拼音标注两种方式分析
Wps 2013 拼音标注两种方式分析 太阳火神的漂亮人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业用途-保持一致"创作公用协议 转 ...
- Mac下intellij idea环境的项目的新建、配色、快捷键的配置
注:本文所使用的intellij idea是14.1.2的版本号. 一.项目的新建(以新建Java项目为例) 选中当中的"create new project". 接下来你会看到下 ...
- ios22--动画
控制器: // // ViewController.m // 07-渐变动画 // // Created by xiaomage on 15/12/30. // Copyright © 2015年 小 ...
- hdu - 5023 - A Corrupt Mayor's Performance Art(线段树)
题目原文废话太多太多太多,我就不copyandpaste到这里啦..发个链接吧题目 题目意思就是:P l r c 将区间 [l ,r]上的颜色变成c Q l r 就是打印出区间[l,r ...
- lodop
一.控件参数 Lodop有如下控件参数,以页面object对象元素的参数形式使用: Caption名称:设置控件的显示标题格式: < pa ram name="Caption" ...