http://www.sufeinet.com/plugin.php?id=keke_group

苏飞论坛

 找回密码
 马上注册

QQ登录

只需一步,快速开始

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

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

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

查看: 6206|回复: 1

[咨询站长] 已用万能框架模拟登陆成功后的需求疑惑!

[复制链接]
发表于 2019-8-12 22:12:04 | 显示全部楼层 |阅读模式
已用万能框架模拟登陆成功。。。

现在还有需求就是免密登陆网站,也就是类似于QQ软件点击邮箱按钮弹出浏览器直接登陆到邮箱一样


OK,按需求分析,直接开干

请求方式:POST
请求地址:http://xxx.com/login.action
PostData:accToken=xxxxxxx

返回登陆成功的主页html源码

postData信息直接模拟就可以了。

请求方式是POST,并不是GET

那么我就度娘了一下,得到下面方法

[C#] 纯文本查看 复制代码
        /// <summary>
        /// 打开新的浏览器,并且提交POST数据
         /// </summary>
        /// <param name="url">地址</param>
        /// <param name="postData">;POST 数据</param>
        public static void OpenNewIe(string url, string postData)
        {
            var ie = new InternetExplorer();
            object vPost, vHeaders, vFlags, vTargetFrame;
            vPost = null;
            vFlags = null;
            vTargetFrame = null;
            vHeaders = "Content-Type: application/x-www-form-urlencoded" + Convert.ToChar(10) + Convert.ToChar(13);
            if (!string.IsNullOrEmpty(postData))
                vPost = ASCIIEncoding.ASCII.GetBytes(postData);
            ie.Visible = true;
            ie.Navigate(url, ref vFlags, ref vTargetFrame, ref vPost, ref vHeaders);
        }



嗯,心想妥妥的,直接用这个方法去打开IE,用fiddler抓包监控了一下发现缺少了cookies,
搜索一下论坛上的,站长说:
vHeaders = "Content-Type: application/x-www-form-urlencoded;set-cookie=写你的Cookie值就行了" + Convert.ToChar(10) + Convert.ToChar(13);

真实的环境去模拟了一下,发现有趣的事情



1:设置的cookie在Content-Type里,真正的cookies浏览器用了他自己的

2:            var ie = new InternetExplorer();创建对象的时候就直接打开了浏览器,不是Inetrnet Explorer IE.

基于着2个问题,我就想着直接GET的方式到login.action页面
将cookies 设置到IE:

[C#] 纯文本查看 复制代码
[DllImport("wininet.dll", CharSet = CharSet.Auto, SetLastError = true)]
        public static extern bool InternetGetCookie(string lpszUrlName, string lbszCookieName, StringBuilder lpszCookieData, ref int lpdwSize);


返回了ture,设置成功了。用Process.StartD打开IE,用fiddler抓包监控了GET的方式去打开IE,并没有将COOKIES设置进去。

不知问题出在哪里,经过漫长的度娘。。。。

度娘有人说:
设置cookie有两种,一种是会话级的,即脱离会话cookie即清除,一种是持久性的,程序结束也仍然存在,直到超期。
会话级的cookie很特别,因为它是保存在内存中的,所以你在Temporary Internet Files文件夹中是找不到它的,只能在你设置cookie的应用程序中读出。而持久性cookie就可以在Temporary Internet Files文件夹中找到。这种cookie才能进行传递。两种cookie的设置程序是一样的,唯一的区别是持久性cookie设置要在cookie值后附加上“;expires=Sun,22-Feb-2099 00:00:00 GMT",过期时间可以根据需要自定。

如果是会话cookie的话是不是就无法免登陆弹出IE?


有人说用webBrowser多好,问题是webBrowser很多东西都不支持,不知道为什么,以为这个网页很多控件,如身份证读卡器,SIM读写卡,摄像头控件等等,


1. 开通SVIP会员,免费下载本站所有源码,不限次数据,不限时间
2. 加官方QQ群,加官方微信群获取更多资源和帮助
3. 找站长苏飞做网站、商城、CRM、小程序、App、爬虫相关、项目外包等点这里
发表于 2019-8-13 10:39:33 | 显示全部楼层
自动登录是需要有接口配合的,比较传一个加密值 那边自动完成登录,如果要登录的网站不是自己的那就不好办了,这种方法写入Cookie是属于病毒或者浏览器注入,也可以是内存注入,只要是正常的浏览器是肯定不会允许的。

几遍是允许也会很快被补丁上。这属于重要漏洞。
您需要登录后才可以回帖 登录 | 马上注册

本版积分规则

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

GMT+8, 2024-11-22 02:39

© 2014-2021

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