苏飞论坛

 找回密码
 马上注册

QQ登录

只需一步,快速开始

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

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

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

查看: 32378|回复: 20

[其他] 获取到验证码 提交提示账号或验证码出错

[复制链接]
发表于 2014-7-8 16:26:39 | 显示全部楼层 |阅读模式
10金钱
使用的cookie就是验证码页面的cookie,
用户名和密码正确 没错误
@站长苏飞  求助

[C#] 纯文本查看 复制代码
 public Form1()
        {
            InitializeComponent();
        }
        string cookie = string.Empty;

        private void textBox1_Leave(object sender, EventArgs e)
        {
            string accountnumber = this.textBox1.Text.Trim();
            string url = "http://captcha.qq.com/getimage?uin=" + accountnumber + "&aid=19000501&cap_cd=jhfJXXsrfKysnSz9PyHLhqsbPwFOvckG&0.11803843325515984";
      
           HttpHelper http = new HttpHelper();
           HttpItem item = new HttpItem()
            {
                URL = url,//URL     必需项   
                Method = "get",//URL     可选项 默认为Get  
                IsToLower = false,//得到的HTML代码是否转成小写     可选项默认转小写  
                UserAgent = "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)",//用户的浏览器类型,版本,操作系统     可选项有默认值  
                ContentType = "application/x-www-form-urlencoded",//返回类型    可选项有默认值  
                ResultType = ResultType.Byte
            };
            HttpResult result = http.GetHtml(item);
            cookie = result.Cookie;
            //cook = new Cookie("12306login", result.Cookie);
            Image code = byteArrayToImage(result.ResultByte);
            this.pictureBox1.Image = code;
            
        }
        private Image byteArrayToImage(byte[] Bytes)
        {
            MemoryStream ms = new MemoryStream(Bytes);
            Image outputImg = Image.FromStream(ms);
            return outputImg;
        }

        private void button1_Click(object sender, EventArgs e)
        {
            string verifycode = this.textBox3.Text.Trim();
            string username = this.textBox1.Text.Trim();
            string password = this.textBox2.Text.Trim();
            string url = "http://ptlogin2.qq.com/login?u=" + username + "&p=" + password + "&verifycode=" + verifycode + "&aid=19000501&u1=http%3A%2F%2Fbd.qq.com%2Fnew%2Findex.jsp&h=1&ptredirect=1&ptlang=2052&from_ui=1&dumy=&low_login_enable=0®master=&fp=loginerroralert&action=1-12-1404779717678&mibao_css=&t=1&g=1&js_ver=10084&js_type=1&login_sig=LnpY8AWplbJsxL*ZWRMCQjZdfrBXRANrh0yKiyaTTrIyFGPClAerq4OnxSYj3WXJ&pt_uistyle=17&pt_rsa=0 HTTP/1.1";
            HttpHelper http = new HttpHelper();
            HttpItem item = new HttpItem()
            {
                URL = url,//URL     必需项   
                Method = "get",//URL     可选项 默认为Get  
                IsToLower = false,//得到的HTML代码是否转成小写     可选项默认转小写  
                UserAgent = "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)",//用户的浏览器类型,版本,操作系统     可选项有默认值  
                ContentType = "application/x-www-form-urlencoded",//返回类型    可选项有默认值  
                ResultType = ResultType.Byte,
                Cookie=cookie
            };
            HttpResult result = http.GetHtml(item);
            cookie = result.Cookie;
            this.richTextBox1.Text = result.Html;
        }



1. 开通SVIP会员,免费下载本站所有源码,不限次数据,不限时间
2. 加官方QQ群,加官方微信群获取更多资源和帮助
3. 找站长苏飞做网站、商城、CRM、小程序、App、爬虫相关、项目外包等点这里
发表于 2014-7-8 16:29:46 | 显示全部楼层
登录的时候是不是应该用Post方法,你抓包看看
回复

使用道具 举报

 楼主| 发表于 2014-7-8 16:37:32 | 显示全部楼层
站长苏飞 发表于 2014-7-8 16:29
登录的时候是不是应该用Post方法,你抓包看看

恩 请@cload看过了 就是通过get登陆的  返回的是
ptuiCB('3','0','','0','您输入的帐号或密码不正确,请重新输入。', '544305819');
这个

图片

图片
回复

使用道具 举报

发表于 2014-7-8 16:40:09 | 显示全部楼层
那估计还有别的参数是变化的吧,我估计没这么简单。QQ的一般都得瑟,没研究过。
回复

使用道具 举报

 楼主| 发表于 2014-7-8 16:43:39 | 显示全部楼层
站长苏飞 发表于 2014-7-8 16:40
那估计还有别的参数是变化的吧,我估计没这么简单。QQ的一般都得瑟,没研究过。

哦哦 有空帮我看看吧 没空就算了  对了我想问下
string url = "http://captcha.qq.com/getimage?uin=" + accountnumber + "&aid=19000501&cap_cd=jhfJXXsrfKysnSz9PyHLhqsbPwFOvckG&0.11803843325515984";
      
我刚才看了下  0.11803843325515984 这个获取验证码每次点击看不清换一张的时候,这个数字都是变化的  这个事时间戳么
回复

使用道具 举报

发表于 2014-7-8 16:46:26 | 显示全部楼层
usemysql 发表于 2014-7-8 16:43
哦哦 有空帮我看看吧 没空就算了  对了我想问下
string url = "http://captcha.qq.com/getimage?uin= ...

应该是的。也可能是动态表单的,你再看看登录页面数据抓两次包对比一下。看看有什么不同的
回复

使用道具 举报

 楼主| 发表于 2014-7-8 16:57:22 | 显示全部楼层
站长苏飞 发表于 2014-7-8 16:46
应该是的。也可能是动态表单的,你再看看登录页面数据抓两次包对比一下。看看有什么不同的

登陆前后有几个get请求里面是带这个参数的,每次都不一样
这个事我抓的包
回复

使用道具 举报

发表于 2014-7-8 17:02:58 | 显示全部楼层
usemysql 发表于 2014-7-8 16:57
登陆前后有几个get请求里面是带这个参数的,每次都不一样
这个事我抓的包

看看返回的是什么,说不定有关系
回复

使用道具 举报

 楼主| 发表于 2014-7-8 17:13:32 | 显示全部楼层
站长苏飞 发表于 2014-7-8 17:02
看看返回的是什么,说不定有关系

ptuiCB('3','0','','0','您输入的帐号或密码不正确,请重新输入。', '544305819');
刚刚页面我输入错密码给我返回的
ptuiCB('4','0','','0','您输入的验证码不正确,请重新输入。', '544305819');
这个是我输入错误验证码返回的json,
那是我密码写错了,但是我程序里面的密码没有错啊
需要加密后再登陆么
回复

使用道具 举报

发表于 2014-7-9 11:02:36 | 显示全部楼层
加密后登陆,加密的密码是要账号密码和验证码一起加密的
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-3-1 19:56

© 2014-2021

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