|
本帖最后由 萧阳天 于 2015-7-18 21:26 编辑
|
网页_访问S | 文本型 | | |
网址 | 文本型 | | | | 访问方式 | 整数型 | | | | 提交信息 | 文本型 | | | | 提交Cookies | 文本型 | | | | 返回Cookies | 文本型 | | | | 附加XY头 | 文本型 | | | | 返回XY头 | 文本型 | | | | 禁止重定向 | 逻辑型 | | | | 网站登录用户名 | 文本型 | | | | 网站登录密码 | 文本型 | | | | 代理地址 | 文本型 | | | | 代理帐号 | 文本型 | | | | 代理密码 | 文本型 | | | | 超时时间 | | | | | 返回重定向 | 文本型 | | | | 返回状态文本 | 文本型 | | | | 返回原始数据 | 字节集 | | | |
变量名 | 类 型 | 静态 | 数组 | 备 注 | 局_URL结构 | URL_COMPONENTS | | | 局_网页地址 | 字节集 | | | 局_域名 | 文本型 | | | 局_端口 | | | | 局_重定向地址 | 文本型 | | | 局_HTTPS | 逻辑型 | | | 局_会话句柄 | 整数型 | | | 局_User_Agent | 文本型 | | | 局_代理名称 | 字节集 | | | 局_会话类型 | | | | 局_连接句柄 | | | | 局_请求句柄 | | | | 局_访问方式 | 文本型 | | | 局_页面地址 | 字节集 | | | 局_设置超时 | | | | 局_请求标记 | | | | 局_请求XY | 文本型 | | | 局_请求报头 | 字节集 | | | 局_数据长度 | 整数型 | | | 局_提交数据 | 字节集 | | | 局_可读长度 | 整数型 | | | 局_缓存数据 | 字节集 | | | 局_网页数据 | 字节集 | | | 局_网页内容 | 文本型 | | | 局_文本数组 | 文本型 | | 0 | 局_编码类型 | 文本型 | | | 局_解码对象 | 对象 | | | 局_变体型 | 变体型 | | | 局_计次 | 整数型 | | | 局_正则 | 正则表达式类 | | | WinHttpSendRequest逻辑 | 逻辑型 | | | 如果 (WinHttpCheckPlatform ()) 局_URL结构.dwStructSize = 60 连续赋值 (-1, 局_URL结构.dwSchemeLength, 局_URL结构.dwHostNameLength, 局_URL结构.dwUrlPathLength, 局_URL结构.dwExtraInfoLength )局_网页地址 = 编码_Ansi到Unicode (网址 )如果 (WinHttpCrackUrl (局_网页地址, 取字节集长度 (局_网页地址 ), 0, 局_URL结构 )) 局_域名 = 编码_Unicode到Ansi (指针到字节集 (局_URL结构.lpszHostName, 局_URL结构.dwHostNameLength × 2 )) 局_页面地址 = 选择 (局_URL结构.dwUrlPathLength < 1, 编码_Ansi到Unicode (“/”), 指针到字节集 (局_URL结构.lpszUrlPath, 局_URL结构.dwUrlPathLength × 2 ) + 指针到字节集 (局_URL结构.lpszExtraInfo, 局_URL结构.dwExtraInfoLength × 2 ) + { 0, 0 })局_端口 = 局_URL结构.nPort 局_HTTPS = 2 = 局_URL结构.nScheme 局_会话类型 = 选择 (取文本长度 (代理地址 ) > 0, 3, 1 )局_代理名称 = 选择 (取文本长度 (代理地址 ) = 0, { 0, 0 }, 选择 (局_HTTPS, 编码_Ansi到Unicode (代理地址 ), 编码_Ansi到Unicode (“http=” + 代理地址 )) )局_会话句柄 = WinHttpOpen (0, 局_会话类型, 局_代理名称, 0, 0 )如果 (局_会话句柄 ≠ 0 )局_连接句柄 = WinHttpConnect (局_会话句柄, 编码_Ansi到Unicode (局_域名 ), 局_端口, 0 )如果 (局_连接句柄 ≠ 0 )如果真 (访问方式 < 0 或 访问方式 > 3 )访问方式 = 0 局_访问方式 = 多项选择 (访问方式 + 1, “GET”, “POST”, “HEAD”, “PUT”) 局_请求句柄 = WinHttpOpenRequest (局_连接句柄, 编码_Ansi到Unicode (局_访问方式 ), 局_页面地址, 0, 0, 0, 选择 (局_HTTPS, 8388608, 0 )) 如果 (局_请求句柄 ≠ 0 )局_设置超时 = 选择 (超时时间 > 0, 超时时间 × 1000, 30000 )如果 (WinHttpSetTimeouts (局_请求句柄, 局_设置超时, 局_设置超时, 局_设置超时, 局_设置超时 )) 如果真 (取文本长度 (网站登录用户名 ) > 0 且 取文本长度 (网站登录密码 ) > 0 )如果真 (WinHttpSetCredentials (局_请求句柄, 0, 1, 编码_Ansi到Unicode (网站登录用户名 ), 编码_Ansi到Unicode (网站登录密码 ), 0 ) = 假)返回状态文本 = “707 设置代理凭证失败!”WinHttpCloseHandle (局_请求句柄 )WinHttpCloseHandle (局_连接句柄 )WinHttpCloseHandle (局_会话句柄 )返回 (“”)如果真 (取文本长度 (代理帐号 ) > 0 且 取文本长度 (代理密码 ) > 0 )如果真 (WinHttpSetCredentials (局_请求句柄, 1, 1, 编码_Ansi到Unicode (代理帐号 ), 编码_Ansi到Unicode (代理密码 ), 0 ) = 假)WinHttpCloseHandle (局_请求句柄 )WinHttpCloseHandle (局_连接句柄 )WinHttpCloseHandle (局_会话句柄 )返回状态文本 = “707 设置代理凭证失败!”返回 (“”)局_请求标记 = 选择 (是否为空 (提交Cookies), 63, 79)如果真 (WinHttpSetOption (局_请求句柄, 局_请求标记, 1, 4 ) = 假)返回状态文本 = “708 禁止自动设置Cookies失败!”WinHttpCloseHandle (局_请求句柄 )WinHttpCloseHandle (局_连接句柄 )WinHttpCloseHandle (局_会话句柄 )返回 (“”)如果真 (禁止重定向 )如果真 (WinHttpSetOption (局_请求句柄, 63, 2, 4 ) = 假)返回状态文本 = “709 重定向设置失败!”WinHttpCloseHandle (局_请求句柄 )WinHttpCloseHandle (局_连接句柄 )WinHttpCloseHandle (局_会话句柄 )返回 (“”)如果真 (取文本长度 (附加XY头 ) > 0 ) 局_请求XY = 附加XY头 如果真 (寻找文本 (局_请求XY, “User-Agent: ”, 1, 真) = -1 )局_请求XY = 局_请求XY + “User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0)” + #换行符 如果真 (寻找文本 (局_请求XY, “Accept: ”, 1, 真) = -1 )局_请求XY = 局_请求XY + “Accept: text/html, application/xhtml+xml, */*” + #换行符 如果真 (寻找文本 (局_请求XY, “Accept-Encoding: ”, 1, 真) = -1 )局_请求XY = 局_请求XY + “Accept-Encoding: gbk, GB2312” + #换行符 如果真 (寻找文本 (局_请求XY, “Accept-Language: ”, 1, 真) = -1 )局_请求XY = 局_请求XY + “Accept-Language: zh-cn” + #换行符 如果真 (寻找文本 (局_请求XY, “Cache-Control: ”, , 真) = -1 )局_请求XY = 局_请求XY + “Cache-Control: no-cache” + #换行符 如果真 (寻找文本 (局_请求XY, “Cookie: ”, , 真) = -1 )如果真 (取文本长度 (提交Cookies ) > 0 )局_请求XY = 局_请求XY + “Cookie: ” + 提交Cookies + #换行符 局_请求报头 = 编码_Ansi到Unicode (局_请求XY)局_数据长度 = 取字节集长度 (局_请求报头 ) ÷ 2 - 1 如果 (WinHttpAddRequestHeaders (局_请求句柄, 局_请求报头, 局_数据长度, 位或 (536870912, 2147483648 )) )局_数据长度 = 0 如果真 (是否为空 (提交信息 ) = 假)如果真 (访问方式 ≠ 0 )局_提交数据 = 到字节集 (提交信息 )局_数据长度 = 取字节集长度 (局_提交数据)WinHttpSendRequest逻辑 = WinHttpSendRequest (局_请求句柄, 0, 0, 局_提交数据, 局_数据长度, 局_数据长度, 0)如果 (WinHttpSendRequest逻辑 )如果 (WinHttpReceiveResponse (局_请求句柄, 0 )) 局_缓存数据 = { }局_网页数据 = { }判断循环首 (WinHttpQueryDataAvailable (局_请求句柄, 局_可读长度 )) 如果真 (局_可读长度 < 1 )跳出循环 ()局_缓存数据 = 取空白字节集 (局_可读长度)如果真 (WinHttpReadData (局_请求句柄, 局_缓存数据, 局_可读长度, 局_数据长度 ) = 假)返回状态文本 = “713 读取数据失败!”跳出循环 ()局_网页数据 = 局_网页数据 + 取字节集左边 (局_缓存数据, 局_数据长度)判断循环尾 ()局_缓存数据 = { }局_数据长度 = 0 WinHttpQueryHeaders (局_请求句柄, 22, 0, 局_缓存数据, 局_数据长度, 0 )局_缓存数据 = 取空白字节集 (局_数据长度 )如果真 (WinHttpQueryHeaders (局_请求句柄, 22, 0, 局_缓存数据, 局_数据长度, 0 )) 返回XY头 = 编码_Unicode到Ansi (局_缓存数据 )返回状态文本 = 取文本中间 (返回XY头, 10, 寻找文本 (返回XY头, #换行符, 10, 假) - 9 )返回XY头 = 子文本替换 (返回XY头, “Set-Cookie”, “Set-Cookie”, , , 假)局_文本数组 = 分割文本 (返回XY头, #换行符, )计次循环首 (取数组成员数 (局_文本数组 ), 局_计次 )如果真 (寻找文本 (局_文本数组 [局_计次 ], “Set-Cookie”, , 假) ≠ -1 )判断 (寻找文本 (局_文本数组 [局_计次 ], “;”, , 假) ≠ -1 )返回Cookies = 返回Cookies + 删首尾空 (文本_取出中间文本 (局_文本数组 [局_计次 ], “Set-Cookie:”, “;”)) + “; ”返回Cookies = 返回Cookies + 删首尾空 (子文本替换 (局_文本数组 [局_计次 ], “Set-Cookie:”, , , , 假)) + “; ”如果真 (文本比较 (取文本左边 (局_文本数组 [局_计次 ], 10 ), “Location: ”, 假) = 0 )返回重定向 = 取文本中间 (局_文本数组 [局_计次 ], 11, 取文本长度 (局_文本数组 [局_计次 ]) - 10 )处理事件 ()计次循环尾 ()返回Cookies = 取文本左
来源于:MIV论坛用户
|
|