苏飞论坛

 找回密码
 马上注册

QQ登录

只需一步,快速开始

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

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

HttpHelper爬虫类(V2.0) 最牛的爬虫类,没有爬不到只有想不到 源码 - 代码生成器 - 讨论区 - 教程- 例子

查看: 734|回复: 1

[求助] 自动登录一直提示验证码错误

[复制链接]
发表于 2020-2-6 20:12:46 | 显示全部楼层 |阅读模式
用万能框架dll写一个网站自动登录的软件,一直提示验证码错误,流程如下:1、先获取验证码和cookie;2、用cookie提交登录。
获取验证码的代码如下:
[C#] 纯文本查看 复制代码
            Shanqiu sq = new Shanqiu();
            HttpHelper http = new HttpHelper();
            HttpItem item = new HttpItem()
            {
                URL = "https://xxxxx.com/code?_=" + sq.GetTimeStampMsOF(),
                Method = "GET",
            };
            Image img = http.GetImage(item);
            pictureBox1.Image = img;
            HttpResult result = http.GetHtml(item);
            myCookie = result.Cookie;


sq.GetTimeStampMsOF是我自己写的一个类,主要用来获取时间戳

登录的代码如下:
[C#] 纯文本查看 复制代码
            string u = txtUsername.Text.Trim();
            string p = txtPassword.Text.Trim();
            string v = txtValidate.Text.Trim();
            string data = "type=1&account=" + u + "&password=" + p + "&code=" + v;
            
            HttpHelper http = new HttpHelper();
            HttpItem item = new HttpItem()
            {
                URL = "https://xxxx.com/login",
                Method = "POST",
                ContentType = "application/x-www-form-urlencoded",
                PostEncoding = Encoding.UTF8,
                Postdata = data,
                Referer = "https://xxxx.com/login",
                Cookie = myCookie,
            };
            Console.WriteLine(Encoding.UTF8);
            HttpResult result = http.GetHtml(item);
            string cookie = result.Cookie;
            Console.WriteLine(result.Header);


myCookie是全局变量,用来存储获取验证码时的cookie。

因为隐私问题我把URL用XXXX.com来代替。
返回的头信息显示验证码错误,请问各位大神知道是哪里出错吗?
找站长苏飞做网站、商城、CRM、小程序、App、爬虫相关、项目外包等点这里
 楼主| 发表于 2020-2-6 23:30:33 | 显示全部楼层
搞定了,感谢总群的Sunshine网友帮忙!给个小红包感谢!

[C#] 纯文本查看 复制代码
Image img = http.GetImage(item);
pictureBox1.Image = img;
HttpResult result = http.GetHtml(item);
myCookie = result.Cookie;

这段代码的问题,这里发送了两个验证码请求,导致验证码和cookie不一致。
正确代码如下:
[C#] 纯文本查看 复制代码
HttpResult result = http.GetHtml(item);
Image img = byteArrayToImage(result.ResultByte);
pictureBox1.Image = img;
myCookie = result.Cookie;

找站长苏飞做网站、商城、CRM、小程序、App、爬虫相关、项目外包等点这里
您需要登录后才可以回帖 登录 | 马上注册

本版积分规则

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

GMT+8, 2020-9-20 21:18

© 2014-2021

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