Wininet CInternetSession类编程的一些心得 包括如何清空cookie

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情

 废话不多直接说自己的心得了:

 

1、如何自己创建http头部:

先抓包自己登陆的网站封确定下封包头是什么样子的

然后构造

以下网址链接都是举例用的,实际网址及链 需要自己用抓包工具确定!

CString UrlHeadStr=_T("Accept: */*/r/nReferer: http://www.sina.com.com/r/nAccept-Language: zh-tw/r/nAccept-Encoding: gzip, deflate/r/nUser-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)/r/nHost: www.sina.com: Keep-Alive/r/n");

 构造完了连接:

JionstrUrl 为要连接网站的web地址,里面某些参数我使用默认值 具体需求 请参照msdn。

CHttpFile *pfile=(CHttpFile *)session->OpenURL(JionstrUrl,1,1,UrlHeadStr,UrlHeadStr.GetLength());

或者通过 :

nPort 为网站端口

CHttpConnection* pconnection =session->GetHttpConnection(_T("www.sina.com.cn"),nPort); //l连接网站服务器 
 CHttpFile *pfile = pconnection->OpenRequest(CHttpConnection::HTTP_VERB_GET,_T("/member_join.php?rid=1"));
 pfile->AddRequestHeaders(UrlHeadStr);

 

2、cookie的修改:

cookie 没有办法通过 ::AddRequestHeader进行修改的这点要切记,企图用这个方法修改就是徒劳。而且在一个进程环境中,连接过的网站,在不同的时间、不同线程、不同session里创建的对象中 都是相同的。这个某些特殊开发中非常郁闷了。查阅了大量网站 都说 无法修改尤其是清除掉cookie的某个键值,并且说这个是个bug其实这个是不对的。我们这里假设我们要清空cookie里的三个键值分别是:

PHPSESSID  ROUTEID  loginname 这里的键值 就是你抓包看到的Cookie:里xxxxxx= 字样中的xxxxx就为一个键值;

 

 session->SetCookie(JionstrUrl,_T("PHPSESSID"),_T("deleted; expires=Thu, 01-Jan-1970 00:00:01 GMT"));//清空Cookie
 session->SetCookie(JionstrUrl,_T("ROUTEID"),_T("deleted; expires=Thu, 01-Jan-1970 00:00:01 GMT"));//清空Cookie
 session->SetCookie(JionstrUrl,_T("loginname"),_T("deleted; expires=Thu, 01-Jan-1970 00:00:01 GMT"));//清空Cookie

 

使用这样就可以cookie里 PHPSESSID  ROUTEID  loginname 三个键值取消掉了,原理是设置过期时间为电脑已经发生过的日期。

 

 

最后 CInternetSession类的异步编程这里 一直在研究 因为发现如果通过::GetHttpConnection 方式连接网站 则回调函数里收不到

INTERNET_STATUS_REQUEST_COMPLETE  这个消息。如果你知道如何处理 请不啬赐教!

 

 

 

 

 

 

WinInet编程:CHttpFile获取请求头信息注意的几个问题             最近,在进行Http协议下的WinInet编程,出现了不少问题。自己在解决这些问题的同时,觉得有必要将一些问题与大家分享一下。这里讲一下CHttpFile获取请求头信息要注意的几个问题。             用MFC的WinInet封装编程,如果想要获取请求头信息,按MSDN的说法是:在CHttpFile对象成功调用SendRequest函数后,再调用Quer 阅读详情

相关推荐

C++实现HTTPS客户端:从TCP套接字到OpenSSL加密的实战指南

网络通信中,HTTP协议作为应用层标准,负责客户端与服务器之间的数据交换。其工作原理基于请求-响应模型,通过TCP连接传输明文数据。然而,在涉及敏感信息传输时,明文通信存在安全风险,这催生了HTTPS技术。HTTPS在HTTP之下加入了SSL/TLS安全层,利用非对称加密、对称加密和数字证书等机制,实现了数据加密、身份认证和完整性保护,其技术价值在于保障传输过程中的隐私与安全。这一技术广泛应用于金融交易、API接口调用、物联网设备通信等对安全要求较高的场景。本文聚焦于C++环境,探讨如何结合TCP套接字与O

weixin_30635053的博客 343

C++/MFC简单实现HTTP通信(基于CHttpFile)

本例介绍一下用MFC中的CHttpFile来简单的实现Http通信,简单有效。 源码: HttpTools.h #pragma once #include <iostream> #include "afxinet.h" namespace HttpTools { enum HttpResult { HTTP_SUCCESS = 0, //成功 HTTP_FAILURE = 1, //失败 HTTP_OUTTIME = 2, //超时 }; enum Http.

r5014的博客[Eosin_Sky] 3641

C++使用 CHttpFile,实现HTTP协议下请求数据,实现HTTP协议下多文件上传!VS2013开发,可直接运行!

1:base64加密传输数据,解决宽字符,中文传输数据问题 2:模拟表单实现多型文件上传 3:vs2013开发,完整项目上传,下载即可完整运行

基于WININET下HTTP协议访问之同步异步

基于WININET下HTTP协议访问,不采用VC下的封装CInternetSession,因为它的异步操作理论上可行,MSDN中说明实际代码还在完善。 WININET API下以在HTTP协议下下载一个页面的源代码信息为例,先来看看同步的流程: 1)InternetOpen; 2)InternetOpenUrl; 3)HttpQueryInfo; 4)InternetReadFil

ben_lbj的专栏 2210

wininet网络编程cookie的点滴研究

1.afxinet.h中CInternetSession 中的cookie的使用,当一个url可以设置一个JSESSIONID,当url不同也就会有不同的cookie JSESSIONID 2.发现使用CInterNetSeesion的设置和查询cookie,都无法设置和获取 CHttpFile* pHttpFile = (CHttpFile*)session.OpenURL(strU

thanklife的专栏 903

MFC中基于WinInet封装CHttpClient:零依赖HTTP客户端实现指南

HTTP客户端是网络编程中的基础组件,用于在客户端与服务器之间进行数据交换。其核心原理是通过建立TCP连接,遵循HTTP协议发送请求和接收响应。在Windows平台的C++桌面开发中,直接使用系统原生API构建HTTP客户端,能实现零第三方依赖、深度集成开发框架并保障部署的简洁性。对于MFC(Microsoft Foundation Classes)应用程序而言,利用系统内置的WinInet API封装自定义的CHttpClient,是一种高度工程实践导向的技术方案。该方案特别适用于需要严格控制依赖、或已

weixin_33766805的博客 312

MFC 与 HTTP编程

HTTP基本是现在应用的最为广泛的应用层协议了。其实本人也不是很懂, 当了两年程序员水平也相当的菜, 今天写这个呢,也是本着交流学习的目的,还望多多指教。。。。 其实大家对MFC有诸多非议, 特别是看到CString都有种想吐的冲动, 不过不要紧,且听我慢慢道来。 众所周知, MFC中对wininet进行了封装, 我们平时做HTTP主要使用三个: C/C++ code

FallingStar08的专栏 6305

AFX综合

AFX综合

jdgdf566的专栏 463

异步调用win32 internet functions

前段时间在开发过程中需要访问网页,用CInternetSession很方便的实现同步访问,但用异步访问是总是弹出assert错误,极不爽快,而我的程序想实现异步访问,在网上搜寻了许久,但所述都不够详细,经鄙人一段时间的摸索,终于成功实现异步访问网页。。。特写此文,以供有需要者共享,如果需要演示代码,可以发信至silver0001@163.com ,本人无偿供应源代码。下面简要叙述一下实现步骤:

silverwgy的专栏 1328

MFC利用CHttpFile实现post数据

bool CUploadUtils::PostUploadPartFile(LPCTSTR Url, LPCTSTR sAaccess_token,std::wstring UploadName, char*& _RetStr, const std::string& _FilePath, std::wstring strLocalFileName, std::wstring wsProjId,ULONGLONG uTotalSize,int nShareCount,int nIndex)

欧特GO 1511

MFC web文件 CHttpFile的使用初探

MFC简单使用CHttpFile

架构师之路,举步维艰。 1028

CInternetSession的简单使用

<br />CInternetSession<br />  使用CInternetSession 创建并初始化一个或多个同时的Internet 会话。如果需要,还可描述与代理服务器的连接。如果Internet连接必须在应用过程中保持着,可创建一个CWinApp的CInternetSession成员。一旦已建立起Internet 会话,就可调用OpenURL。CInternetSession会通过调用全局函数AfxParseURL来为分析映射URL。无论协议型如何,CInternetSession 解释

silent_cat的专栏 4726

VC++实现FTP编程

<br />VC++实现FTP编程<br /> 一.概述<br />TCP/IP协议是一个四层协议,它由应用层、传输层、网络层和链路层构成。TCP/IP协议栈的每一层都由许多协议构成,从而构成了一个协议簇。<br />应用层主要包括的协议有Telnet、FTP、HTTP、SMTP/POP3和DNS等。<br />传输层主要包括的协议有TCP和UDP。<br />网络层主要包括IP和IP的附属协议。<br />数据链路层主要包括的协议有ARP(地址解析协议)、RARP协议、Ethernet协议等。<br />

timke212004的专栏 1083

关于CInternetSession缓存问题

调用完一次之后,再次调用会出现不发送请求但会返回 HTTP_STATUS_OK 的现象。需要加一句代码。听说是windows mobile 的一个BUG。 BOOL b = InternetSetOption (session,INTERNET_OPTION_RESET_URLCACHE_SESSION,NULL,0); 一段代码: CInternetSession s

快慢机的地盘 3427

MFC文件下载

1.CInternetSession          使用CInternetSession 创建并初始化一个或多个同时的Internet会话。如果需要,还可描述与代理服务器的连接。如果Internet 连接必须在应用过程中保持着,可创建一个CWinApp的CInternetSession成员。一旦已建起Internet 会话,就可调用OpenURL。CInternetSession

C# 5747

MFC 上传文件函数 (利用 CHttpFile 上传 )

上传本地文件至服务器指定位置 //上传本地文件至服务器指定位置 BOOL UploadFile(LPCTSTR strURL, //负责接收上传操作的页面的URL LPCTSTR strLocalFileName) //待上传的本地文件路径 { ASSERT(strURL != NULL &amp;&amp; strLocalFileName != NULL); ...

不经一番寒彻骨,怎得梅花扑鼻香。 4161
上一篇: socket重用
下一篇: 汇编的 OF位 到底代表什么!
killalarm
博客等级 码龄17年 13粉丝 6原创
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值