开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 1013|回复: 2
收起左侧

[已解决] 网页访问 提交cookies的问题

 关闭 [复制链接]
结帖率:38% (9/24)
发表于 2019-6-16 05:29:21 | 显示全部楼层 |阅读模式   福建省厦门市
30精币
我用网页_取Cookies()发现取出来的Cookies不完整. 然后用InternetGetCookieA取出完整的Cookies;
使用网页_访问 网页_访问S 网页_访问_对象 提交Cookies发现都无法登录.
  
BreakResult = 编码_Utf8到Ansi (网页_访问_对象 (“https://bbs.TslGame.net/plugin.php?id=login”, , , Cookies, , ))

然后我用C语言把精易的移植过去发现可以登录
  
if (!HttpURL)return nullptr;
void *pTmp = nullptr;
//如果已申请过内存,则释放之前申请的内存防止内存泄漏;
if (TmpAlloc) { free (TmpAlloc); TmpAlloc = nullptr; }
Mod_Text Text;
//是否Https访问;
BOOL Https = FALSE;
if (strstr (HttpURL, "https://"))Https = TRUE;
if (!URLRuquesDataInfo.RequestHeader)URLRuquesDataInfo.RequestHeader = "user-agent: Mozilla/4.0 (compatible; MSIE 9.0; Windows NT 6.1)";
//打开HTTP句柄;
HINTERNET hInternetopen = InternetOpen (URLRuquesDataInfo.RequestHeader, INTERNET_OPEN_TYPE_DIRECT, nullptr, nullptr, NULL);
if (!hInternetopen)return nullptr;
//取URL服务器域名;
char *pChar2 = HttpGetHostName (HttpURL);
//访问端口;
INTERNET_PORT InterPort = INTERNET_DEFAULT_HTTP_PORT;
if (Https)InterPort = INTERNET_DEFAULT_HTTPS_PORT;
//创建Internet连接;
HINTERNET hInternetConnect = InternetConnect (hInternetopen, pChar2, InterPort, NULL, NULL, INTERNET_SERVICE_HTTP, NULL, NULL);
if (!hInternetConnect) { InternetCloseHandle (hInternetopen); return nullptr; }
//HTTP访问方式;
char plverb[125] = { 0 };
switch (URLRuquesDataInfo.URLRequestType) {
case Get:
strcpy (plverb, "GET");
break;
case Post:
strcpy (plverb, "POST");
break;
case Head:
strcpy (plverb, "HEAD");
break;
default:
strcpy (plverb, "GET");
break;
}
char *pURLPage = HttpGetURLPage (HttpURL);
DWORD RequestFlg = INTERNET_FLAG_RELOAD | INTERNET_COOKIE_THIRD_PARTY;
if (!URLRuquesDataInfo.RequestCookies)RequestFlg = RequestFlg | INTERNET_FLAG_NO_COOKIES;
if (Https)RequestFlg = RequestFlg | INTERNET_FLAG_SECURE;
else RequestFlg = RequestFlg | INTERNET_FLAG_IGNORE_REDIRECT_TO_HTTPS;
HINTERNET hInternetRequest = HttpOpenRequest (hInternetConnect, plverb, pURLPage, "HTTP/1.1", NULL, NULL, RequestFlg, NULL);
if (!hInternetRequest) { InternetCloseHandle (hInternetConnect); InternetCloseHandle (hInternetopen); return nullptr; }
UINT slen = 1024 * 1024 * sizeof (char) + sizeof (char);
char *pTmpRequestHeader = (char *)malloc (slen);
if (!pTmpRequestHeader) { InternetCloseHandle (hInternetConnect); InternetCloseHandle (hInternetopen); InternetCloseHandle (hInternetRequest); return nullptr; }
ZeroMemory (pTmpRequestHeader, slen);
//设置协议头;
if (URLRuquesDataInfo.RequestHeader)strcpy (pTmpRequestHeader, URLRuquesDataInfo.RequestHeader);
if (strstr (pTmpRequestHeader, "Accept:") == nullptr)strcat (pTmpRequestHeader, "\r\nAccept: */*");
if (strstr (pTmpRequestHeader, "Referer:") == nullptr) {
strcat (pTmpRequestHeader, "\r\nReferer: ");
strcat (pTmpRequestHeader, HttpURL);
}
if (strstr (pTmpRequestHeader, "Accept-Language:") == nullptr)strcat (pTmpRequestHeader, "\r\nAccept-Language: zh-cn");
if (strstr (pTmpRequestHeader, "Content-Type:") == nullptr)strcat (pTmpRequestHeader, "\r\nContent-Type: application/x-www-form-urlencoded");
if (URLRuquesDataInfo.RequestCookies) {
if (strstr (pTmpRequestHeader, "Cookie:") == nullptr)strcat (pTmpRequestHeader, "\r\nCookie: ");
strcat (pTmpRequestHeader, URLRuquesDataInfo.RequestCookies);
}
strcat (pTmpRequestHeader, "\r\n");
//发送请求信息;
UINT len = strlen (pTmpRequestHeader);
if (URLRuquesDataInfo.URLRequestType == Get)HttpSendRequest (hInternetRequest, pTmpRequestHeader, strlen (pTmpRequestHeader), nullptr, NULL);
else HttpSendRequest (hInternetRequest, pTmpRequestHeader, strlen (pTmpRequestHeader), (LPVOID)URLRuquesDataInfo.RequestData, strlen (URLRuquesDataInfo.RequestData) * sizeof (char) + sizeof (char));
//申请返回数据临时存储缓冲区;
slen = 2048;
char *ResultData = (char*)malloc (slen);
if (!ResultData) { InternetCloseHandle (hInternetConnect); InternetCloseHandle (hInternetopen); InternetCloseHandle (hInternetRequest); free (pTmpRequestHeader); return nullptr; }
//申请保存网页数据存储缓冲区;
char *SaveData = (char*)malloc (slen);
if (!SaveData) { InternetCloseHandle (hInternetConnect); InternetCloseHandle (hInternetopen); InternetCloseHandle (hInternetRequest); free (pTmpRequestHeader); free (ResultData); return nullptr; }
DWORD ReturnLen = 0;
UINT SaveLen = 0, AllocLen = slen;
//循环读取网页数据;
char *pTmpdat = SaveData;
do
{
//将临时存储缓冲区内存块置零;
ZeroMemory (ResultData, slen);
//将网页数据读取到临时存储缓冲区;
InternetReadFile (hInternetRequest, ResultData, slen, &ReturnLen);
if (!ReturnLen)break;
//复制临时存储的网页数据到网页数据存储缓冲区;
CopyMemory (pTmpdat, ResultData, ReturnLen);
//计算当前已读取的网页数据长度;
SaveLen += ReturnLen;
//计算需要申请网页缓冲区的长度;
AllocLen += ReturnLen;
//重新申请缓冲区大小;
void *pvoid = realloc (SaveData, AllocLen);
if (!pvoid)break;
//保存缓冲区指针;
else SaveData = (char*)pvoid;
//移动缓冲区指针位置;
pTmpdat = (char*)SaveData + SaveLen;
//新申请的内存块置零;
ZeroMemory (pTmpdat, ReturnLen);
} while (ReturnLen);
//释放并返回网页数据;
TmpAlloc = SaveData;
InternetCloseHandle (hInternetConnect);
InternetCloseHandle (hInternetopen);
InternetCloseHandle (hInternetRequest);
free (pTmpRequestHeader);
free (ResultData);
return (char*)TmpAlloc;

最佳答案

查看完整内容

精易模块是开源的,你可以去模块源码里看看

回答提醒:如果本帖被关闭无法回复,您有更好的答案帮助楼主解决,请发表至 源码区 可获得加分喔。
友情提醒:本版被采纳的主题可在 申请荣誉值 页面申请荣誉值,获得 1点 荣誉值,荣誉值可兑换荣誉会员、终身vip用户组。
快捷通道:申请荣誉值无答案申请取消悬赏投诉有答案未采纳为最佳
结帖率:96% (24/25)

签到天数: 3 天

发表于 2019-6-16 05:29:22 | 显示全部楼层   安徽省阜阳市
精易模块是开源的,你可以去模块源码里看看
回复

使用道具 举报

结帖率:38% (9/24)
 楼主| 发表于 2019-6-17 03:45:29 | 显示全部楼层   福建省厦门市
qingying 发表于 2019-6-16 15:16
精易模块是开源的,你可以去模块源码里看看

已经弄好了,是协yi头的原因.
回复

使用道具 举报

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

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 793400750,邮箱:wp@125.la
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

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