设置httponlycookie解决mshtml编程无法获取验证码图片流

lzyGod的博客      2022-02-08     333

关键词:

最近给客户做的项目有一个新需求,客户需要在打开的IE浏览器中做自动登录,登录的页面上有神兽验证码.解决验证码的方案是找第三方平台打码.这样就有一个问题,如何把正确的验证码传给第三方打码平台.

大家都知道,验证码是随机生成的,每次图片的URL访问都会变化,这样传路径给第三方,图片已经不是页面上的那张图了.于是想到了两种思路去解决这个问题:

1.通过截屏的方式把验证码截取出来再传给第三方打码.

2.抓到IE的Cookie与所有特征参数,利用这些参数发起Request模拟刷新验证码.

由于方式1本人才疏学浅,之前没有研究过这方面相关的知识,于是果断放弃,决定采取plan B.

使用方式2时发现一个问题,SessionID设置了httponly,而这个设置让我们无法直接通过接口读取到httponly的Cookie.这就无法伪装成IE浏览器去刷新验证码了.因为没有SessionID呀,服务器不认识我呀.于是再转换思路,决定先设置好IE的Cookie后再打开网站,这样服务器就能认识我了.能认识我就好办了,再去完成模拟刷新验证码的问题.换个思路后开始重新进行:

1.首先通过HttpRequest请求得到网站的所有Cookie,包括Httponly的.

2.调用wininet.dll给IE浏览器设置我们得到的Cookie.附上设置Cookie的核心代码(网上找的,如有侵权请见谅)

private const int INTERNET_COOKIE_HTTPONLY = 0x00002000;
        [DllImport("wininet.dll", CharSet = CharSet.Auto, SetLastError = true)]
        static extern bool InternetGetCookieEx(string pchURL, string pchCookieName, StringBuilder pchCookieData, ref
        System.UInt32 pcchCookieData, int dwFlags, IntPtr lpReserved);

        [DllImport("wininet.dll", CharSet = CharSet.Auto, SetLastError = true)]
        static extern int InternetSetCookieEx(string lpszURL, string lpszCookieName, string lpszCookieData, int dwFlags,
        IntPtr dwReserved);
        private static string GetCookies(string url)
        {
            uint datasize = 256;
            StringBuilder cookieData = new StringBuilder((int)datasize);
            if (!InternetGetCookieEx(url, null, cookieData, ref datasize, 0x2000, IntPtr.Zero))
            {
                if (datasize < 0)
                    return null;
                cookieData = new StringBuilder((int)datasize);
                if (!InternetGetCookieEx(url, null, cookieData, ref datasize, 0x00002000, IntPtr.Zero))
                    return null;
            }
            return cookieData.ToString();
        }
        public static string SetCookieForIE(string url, CookieCollection cookiestring, string path = "/")
        {
            try
            {
                foreach (Cookie c in cookiestring)
                {
                    string name = c.Name;
                    string value = c.Value + ";expires=" + DateTime.Now.AddDays(1).ToString("r");
                    InternetSetCookieEx(url, name, value, INTERNET_COOKIE_HTTPONLY, IntPtr.Zero);
                }
                return GetCookies(url);
            }
            catch (Exception)
            {
                return "false";
                throw;
            }
        }

3.设置好Cookie后启动IE打开网站,这时使用的SessionID就是我们设置的了,然后用HttpRequst请求刷新验证码得到图片流,传给第三方平台打码得到结果,执行登录,问题解决.

我采用的解决思路就是模拟刷新验证码,如果有其他小伙伴看了此文章有不明白之处,欢迎留言,请轻喷.

如何使用 mshtml 将复选框设置为“选中”?

】如何使用mshtml将复选框设置为“选中”?【英文标题】:Howtosetacheckboxto"checked"usingmshtml?【发布时间】:2010-10-2306:55:30【问题描述】:我可以用mshtml做大部分我需要做的事情,但我有点不知道如何将复选框输入元素设置... 查看详情

浏览器出现mshtml.dell错误,怎么解决

在关闭浏览器的时候老出现类似的问题mshtml.dll是HTML解释器相关模块。MSHTML.DLL是一个用于解析HTML语言的动态链接库,IE、Outlook、OutlookExpress等应用程序都使用了该动态链接库。攻击者有可能利用特定的javascript远程拒绝服务攻击... 查看详情

hostonlycookie和httponlycookie

怎么使用Cookie?  通常我们有两种方式给浏览器设置或获取Cookie,分别是HTTPResponseHeaders中的Set-CookieHeader和HTTPRequestHeaders中的CookieHeader,以及通过JavaScript对document.cookie进行赋值或取值。rfc6265第5.2节定义的Set-CookieHeader,除了必... 查看详情

您究竟如何在 ASP.NET 中配置 httpOnlyCookies?

】您究竟如何在ASP.NET中配置httpOnlyCookies?【英文标题】:HowexactlydoyouconfigurehttpOnlyCookiesinASP.NET?【发布时间】:2010-09-0704:56:46【问题描述】:受这篇CodingHorror文章“ProtectingYourCookies:HttpOnly”的启发你如何设置这个属性?网络配置... 查看详情

httponlycookie怎么讲

...的访问都会被禁止。当然也有前提:使用新版的浏览器。HttpOnlyCookie最初由Microsoft’sInternetExplorer6SP1引入,至今为止,已是设置会话cookie的最佳实践了。其语法如下:在上面的HTTP请求头中,HttpOnly知会浏览器在保存cookie,但不要... 查看详情

如何检测是不是设置了 httpOnly cookie

】如何检测是不是设置了httpOnlycookie【英文标题】:HowtodetectifanhttpOnlycookiehasbeenset如何检测是否设置了httpOnlycookie【发布时间】:2016-10-2713:36:19【问题描述】:服务器已在浏览器上设置了一个仅限http的cookieuid。我需要找出这个cook... 查看详情

mshtml.dll被瑞星查毒删除,网页无法打开,瑞星也进不来如何修复

...复是不太安全的,最好使用权威安全软件修复此问题。【解决方案】建议下载最新版的360系统急救箱恢复丢失的DLL文件,下载后,打开程序,点击开始急救等出现“引擎初始化完成”字样后点击“恢复丢失的DLL文件”,立即修复... 查看详情

带有 React 和 Node 的 httpOnly cookie

】带有React和Node的httpOnlycookie【英文标题】:httpOnlycookieswithReactandNode【发布时间】:2021-06-2303:54:34【问题描述】:我正在尝试弄清楚如何使用httpOnlycookie和可扩展性可选性来使用React和Node实现身份验证/授权。我读过JWT可以通过使... 查看详情

如何使用 JWT + HttpOnly Cookie 正确刷新令牌?

】如何使用JWT+HttpOnlyCookie正确刷新令牌?【英文标题】:HowtoproperlyrefreshatokenusingJWT+HttpOnlyCookie?【发布时间】:2020-01-2521:01:22【问题描述】:受this文档和this主题的启发,我已经使用JWT+HttpOnlyCookies在我的AspNetCoreAPI应用程序中成功... 查看详情

MSHTML 出现在编辑

】MSHTML出现在编辑【英文标题】:MSHTML&nbsp;appearonediting【发布时间】:2015-01-1800:00:36【问题描述】:我想添加另一个MSHTML问题。感谢所有回复。我们在Delphi中使用标准的TWebbrowser组件,该组件在内部使用mshtml.dll。另外,我们... 查看详情

wpf下如何去除webbrowser的滚动条

参考技术A方法一:适用于VS20081、在解决方案中添加“引用”选择COM下的Microsofthtmlobjectlibrary2、引入命名空间usingmshtml;3、添加WebBrowser事件在WebBrowser的LoadCompleted事件里mshtml.HTMLDocumentClassdom=(mshtml.HTMLDocumentClass)webBrowserCygj.Document;//... 查看详情

httponlycookie保护accesstoken

【导读】JWT认证方式目前已被广泛使用,一直以来我们将token放在请求头中的Authorization中,若通过此种方式,一旦token被恶意窃取,攻击者可肆意对用户可访问资源进行任意索取我们大多都是通过登录成功后,... 查看详情

keil2编51单片机程序c指针赋值提示重复定义,怎么解决

...译器会自动分配地址3.对应地址位置双击,出现红色断点设置标志4.点击全速运行,在对应的断点处会停止运行,查应寄存器 查看详情

如何在 Flask 中设置 HTTPONLY cookie

】如何在Flask中设置HTTPONLYcookie【英文标题】:HowtosetanHTTPONLYcookieinFlask【发布时间】:2020-03-1917:26:36【问题描述】:我阅读了Set"secure"attributeforFlaskcookies,但它是用于设置安全cookie,但我正在尝试设置HTTPONLYcookie。它们都是某种安... 查看详情

公共编解码器的未解决依赖关系

】公共编解码器的未解决依赖关系【英文标题】:UNRESOLVEDDEPENDENCIESforcommons-codec【发布时间】:2013-11-1402:53:59【问题描述】:我正在尝试检索GoogleReportingAPI的库:compile\'com.google.apis:google-api-services-analytics:v3-rev74-1.17.0-rc\'但是我遇... 查看详情

关于引用mshtml的问题

今天看了个验证码识别的代码,其中引用到了mshtml.dll,找了半天原来就是microsoft.mshtml.dll。查这个dll的时候还发现了好几篇关于这个dll添加问题的文章。顺便看了下,原来这个dll有三个,添加引用时要注意了。   第一... 查看详情

如何使用存储在httponlycookie中的令牌注销(代码片段)

...,我只是将其移除到客户端,但现在因为我将令牌存储在HttpOnlycookie中,所以我无法做任何客户端操作。我是否在服务器上调用使用新cookieAUTH进行响应并且值为空的路由?我试过了,但来自logout的响应cookie似乎没有取代HttpOnlycook... 查看详情

httpcookie与cookie安全

...的安全性关联大一点,配置节如下<httpCookiesdomain="String"httpOnlyCookies="true|false"requireSSL="true|false"/>  httpOnlyCookies:默认是false,作用是是否禁用浏览器脚本访问cookie。在 查看详情