| 子程序名 | 返回值类型 | 公开 | 备 注 | ||||
| 网页_访问S | 文本型 | 源码由[洫蜘蛛]提供,使用WinHttp的方式访问网页,如果返回是“?”请查询返回协议头是否有“Content-Encoding: gzip“表示gzip压缩过网页,可用 网页_GZIP解压()命令解压,如果返回是乱码,则返回原始文本,请自行转换编码,失败返回空文本,请取出状态文本 | |||||
| 参数名 | 类 型 | 参考 | 可空 | 数组 | 备 注 | ||
| 网址 | 文本型 | 完整的网页地址,必须包含http://或者https:// | 访问方式 | 整数型 | 0=GET 1=POST 2=HEAD 3=PUT | 提交信息 | 文本型 | POST专用 | 提交Cookies | 文本型 | 本参数传递变量时会自动回传返回的Cookie | 返回Cookies | 文本型 | 返回的Cookie | 附加协议头 | 文本型 | 一行一个请用换行符隔开,建议填写常量值或文本值,防止因传参引发错误 | 返回协议头 | 文本型 | 返回的协议头 | 禁止重定向 | 逻辑型 | 默认不禁止网页重定向 | 网站登录用户名 | 文本型 | 自动登录网页用户名 如路由器 | 网站登录密码 | 文本型 | 代理地址 | 文本型 | 代理地址,格式为 8.8.8.8:88 | 代理帐号 | 文本型 | 代理密码 | 文本型 | 超时时间 | 可以被省略,单位:秒,默认30秒,如果提供大于0的数值,则修改操作超时时间。 | 返回重定向 | 文本型 | 可以被省略,提供参数时只能提供文本型变量,用于当发生重定向时取回页面重定向的地址。 | 返回状态文本 | 文本型 | 返回原始数据 | 字节集 | 可以被省略,返回原始网页编码 |
| 变量名 | 类 型 | 静态 | 数组 | 备 注 | ||
| 局_URL结构 | URL_COMPONENTS | |||||
| 局_网页地址 | 字节集 | |||||
| 局_域名 | 文本型 | |||||
| 局_端口 | ||||||
| 局_重定向地址 | 文本型 | |||||
| 局_HTTPS | 逻辑型 | |||||
| 局_会话句柄 | 整数型 | |||||
| 局_User_Agent | 文本型 | |||||
| 局_代理名称 | 字节集 | |||||
| 局_会话类型 | ||||||
| 局_连接句柄 | ||||||
| 局_请求句柄 | ||||||
| 局_访问方式 | 文本型 | |||||
| 局_页面地址 | 字节集 | |||||
| 局_设置超时 | ||||||
| 局_请求标记 | ||||||
| 局_请求协议 | 文本型 | |||||
| 局_请求报头 | 字节集 | |||||
| 局_数据长度 | 整数型 | |||||
| 局_提交数据 | 字节集 | |||||
| 局_可读长度 | 整数型 | |||||
| 局_缓存数据 | 字节集 | |||||
| 局_网页数据 | 字节集 | |||||
| 局_网页内容 | 文本型 | |||||
| 局_文本数组 | 文本型 | "0" | ||||
| 局_编码类型 | 文本型 | |||||
| 局_解码对象 | 对象 | |||||
| 局_变体型 | 变体型 | |||||
| 局_计次 | 整数型 | |||||
| 局_正则 | 正则表达式类 | |||||
如果 (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 = #INTERNET_SCHEME_HTTPS = 局_URL结构.nScheme
局_会话类型 = 选择 (取文本长度 (代理地址) > 0, #WINHTTP_ACCESS_TYPE_NAMED_PROXY, #WINHTTP_ACCESS_TYPE_NO_PROXY )
局_代理名称 = 选择 (取文本长度 (代理地址) = 0, { 0, 0 }, 选择 (局_HTTPS, 编码_Ansi到Unicode (代理地址), 编码_Ansi到Unicode (“http=” + 代理地址)))
局_会话句柄 = WinHttpOpen (0, 局_会话类型, 局_代理名称, 0, 0)

如果 (局_会话句柄 ≠ 0)

局_连接句柄 = WinHttpConnect (局_会话句柄, 编码_Ansi到Unicode (局_域名), 局_端口, 0)


如果 (局_连接句柄 ≠ 0)


局_访问方式 = 选择 (访问方式 < 0 或 访问方式 > 3, “GET”, 多项选择 (访问方式 + 1, “GET”, “POST”, “HEAD”, “PUT”))


局_请求句柄 = WinHttpOpenRequest (局_连接句柄, 编码_Ansi到Unicode (局_访问方式), 局_页面地址, 0, #WINHTTP_NO_REFERER, #WINHTTP_DEFAULT_ACCEPT_TYPES, 选择 (局_HTTPS, #WINHTTP_FLAG_SECURE, 0))



如果 (局_请求句柄 ≠ 0)



局_设置超时 = 选择 (超时时间 > 0, 超时时间 × 1000, 30000)




如果 (WinHttpSetTimeouts (局_请求句柄, 局_设置超时, 局_设置超时, 局_设置超时, 局_设置超时))





如果真 (取文本长度 (网站登录用户名) > 0 且 取文本长度 (网站登录密码) > 0)






如果真 (WinHttpSetCredentials (局_请求句柄, #WINHTTP_AUTH_TARGET_SERVER, #WINHTTP_AUTH_SCHEME_BASIC, 编码_Ansi到Unicode (网站登录用户名), 编码_Ansi到Unicode (网站登录密码), 0) = 假)






返回状态文本 = “707 设置代理凭证失败!”






WinHttpCloseHandle (局_请求句柄)






WinHttpCloseHandle (局_连接句柄)






WinHttpCloseHandle (局_会话句柄)






返回 (“”)













如果真 (取文本长度 (代理帐号) > 0 且 取文本长度 (代理密码) > 0)






如果真 (WinHttpSetCredentials (局_请求句柄, #WINHTTP_AUTH_TARGET_PROXY, #WINHTTP_AUTH_SCHEME_BASIC, 编码_Ansi到Unicode (代理帐号), 编码_Ansi到Unicode (代理密码), 0) = 假)






WinHttpCloseHandle (局_请求句柄)






WinHttpCloseHandle (局_连接句柄)






WinHttpCloseHandle (局_会话句柄)






返回状态文本 = “707 设置代理凭证失败!”






返回 (“”)












局_请求标记 = 选择 (是否为空 (提交Cookies), #WINHTTP_OPTION_DISABLE_FEATURE, #WINHTTP_OPTION_ENABLE_FEATURE )





如果真 (WinHttpSetOption (局_请求句柄, 局_请求标记, #WINHTTP_DISABLE_COOKIES, 4) = 假)





返回状态文本 = “708 禁止自动设置Cookies失败!”





WinHttpCloseHandle (局_请求句柄)





WinHttpCloseHandle (局_连接句柄)





WinHttpCloseHandle (局_会话句柄)





返回 (“”)





如果真 (禁止重定向)






如果真 (WinHttpSetOption (局_请求句柄, #WINHTTP_OPTION_DISABLE_FEATURE, #WINHTTP_DISABLE_REDIRECTS, 4) = 假)






返回状态文本 = “709 重定向设置失败!”






WinHttpCloseHandle (局_请求句柄)






WinHttpCloseHandle (局_连接句柄)






WinHttpCloseHandle (局_会话句柄)






返回 (“”)













如果真 (取文本长度 (附加协议头) > 0) ' 先加载用户设置的协议头,后面再进行补充。





局_请求协议 = 附加协议头 + #换行符 





如果真 (寻找文本 (局_请求协议, “User-Agent: ”, 1, 真) = -1)





局_请求协议 = 局_请求协议 + “User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0)” + #换行符 





如果真 (寻找文本 (局_请求协议, “Accept: ”, 1, 真) = -1)





局_请求协议 = 局_请求协议 + “Accept: text/html, application/xhtml xml, */*” + #换行符 





如果真 (寻找文本 (局_请求协议, “Accept-Encoding: ”, 1, 真) = -1)





局_请求协议 = 局_请求协议 + “Accept-Encoding: gbk, GB2312” + #换行符 





如果真 (寻找文本 (局_请求协议, “Accept-Language: ”, 1, 真) = -1)





局_请求协议 = 局_请求协议 + “Accept-Language: zh-cn” + #换行符 





如果真 (寻找文本 (局_请求协议, “Content-Type:”, , 假) = -1)





局_请求协议 = 局_请求协议 + “Content-Type: application/x-www-form-urlencoded” + #换行符 





如果真 (寻找文本 (局_请求协议, “Cache-Control: ”, , 真) = -1)





局_请求协议 = 局_请求协议 + “Cache-Control: no-cache” + #换行符 





如果真 (寻找文本 (局_请求协议, “Cookie: ”, , 真) = -1)






如果真 (取文本长度 (提交Cookies) > 0)






局_请求协议 = 局_请求协议 + “Cookie: ” + 提交Cookies + #换行符 



















局_请求报头 = 编码_Ansi到Unicode (局_请求协议)




局_数据长度 = 取字节集长度 (局_请求报头) ÷ 2 - 1





如果 (WinHttpAddRequestHeaders (局_请求句柄, 局_请求报头, 局_数据长度, 位或 ( #WINHTTP_ADDREQ_FLAG_ADD, #WINHTTP_ADDREQ_FLAG_REPLACE )))





局_提交数据 = 到字节集 (提交信息)





局_数据长度 = 取字节集长度 (局_提交数据)






如果 (WinHttpSendRequest (局_请求句柄, 0, 0, 局_提交数据, 局_数据长度, 局_数据长度, 0))







如果 (WinHttpReceiveResponse (局_请求句柄, 0) ≠ 0)







局_缓存数据 = { }







局_网页数据 = { }








判断循环首 (WinHttpQueryDataAvailable (局_请求句柄, 局_可读长度))









如果真 (局_可读长度 < 1)









跳出循环 ()








局_缓存数据 = 取空白字节集 (局_可读长度)









如果真 (WinHttpReadData (局_请求句柄, 取指针_字节集型 (局_缓存数据), 局_可读长度, 局_数据长度) = 假)









返回状态文本 = “713 读取数据失败!”









跳出循环 ()








局_网页数据 = 局_网页数据 + 取字节集左边 (局_缓存数据, 局_数据长度)








判断循环尾 ()







局_缓存数据 = { }







局_数据长度 = 0







WinHttpQueryHeaders (局_请求句柄, #WINHTTP_QUERY_RAW_HEADERS_CRLF, 0, 取指针_字节集型 (局_缓存数据), 局_数据长度, #WINHTTP_NO_HEADER_INDEX )







局_缓存数据 = 取空白字节集 (局_数据长度)








如果真 (WinHttpQueryHeaders (局_请求句柄, #WINHTTP_QUERY_RAW_HEADERS_CRLF, 0, 取指针_字节集型 (局_缓存数据), 局_数据长度, #WINHTTP_NO_HEADER_INDEX ))








返回协议头 = 编码_Unicode到Ansi (局_缓存数据)








返回状态文本 = 取文本中间 (返回协议头, 10, 寻找文本 (返回协议头, #换行符, 10, 假) - 9)








返回协议头 = 子文本替换 (返回协议头, “Set-Cookie”, “Set-Cookie”, , , 假)








局_文本数组 = 分割文本 (返回协议头, #换行符, )









计次循环首 (取数组成员数 (局_文本数组), 局_计次)










如果真 (寻找文本 (局_文本数组 [局_计次], “Set-Cookie”, , 假) ≠ -1)











判断 (寻找文本 (局_文本数组 [局_计次], “;”, , 假) ≠ -1)











返回Cookies = 返回Cookies + 删首尾空 (文本_取出中间文本 (局_文本数组 [局_计次], “Set-Cookie:”, “;”)) + “; ”











返回Cookies = 返回Cookies + 删首尾空 (子文本替换 (局_文本数组 [局_计次], “Set-Cookie:”, , , , 假)) + “; ”























如果真 (文本比较 (取文本左边 (局_文本数组 [局_计次], 10), “Location: ”, 假) = 0)










返回重定向 = 取文本中间 (局_文本数组 [局_计次], 11, 取文本长度 (局_文本数组 [局_计次]) - 10)









处理事件 ()









计次循环尾 ()








返回Cookies = 取文本左边 (返回Cookies, 取文本长度 (返回Cookies) - 2)









如果真 (取反 (是否为空 (提交Cookies)))









网页_Cookie合并更新 (提交Cookies, 返回Cookies)








' -------------------提取网页编码,并转码








返回原始数据 = 局_网页数据








局_网页内容 = 到文本 (返回原始数据)








CoInitialize (0)









如果真 (局_正则.创建 (“









局_编码类型 = 局_正则.取子匹配文本 (1, 1)










如果真 (取文本长度 (局_编码类型) > 0)











如果真 (局_编码类型 ≠ “gbk” 或 局_编码类型 ≠ “gb2312”) ' 如果为中文就不处理












如果真 (局_解码对象.创建 (“Adodb.Stream”, ))












局_变体型.赋值 (局_网页数据, )












局_解码对象.写属性 (“Type”, 1)












局_解码对象.写属性 (“Mode”, 3)












局_解码对象.方法 (“Open”, )












局_解码对象.方法 (“Write”, 局_变体型)












局_解码对象.写属性 (“Position”, 0)












局_解码对象.写属性 (“Type”, 2)












局_解码对象.写属性 (“Charset”, 局_编码类型)












局_网页内容 = 局_解码对象.文本方法 (“ReadText”, )












局_解码对象.方法 (“Close”, )












局_解码对象.清除 ()












局_变体型.清除 ()




































处理事件 ()








CoUninitialize ()







处理事件 ()







返回状态文本 = “712 服务器未响应!”






处理事件 ()






返回状态文本 = “711 发送请求失败!”





处理事件 ()





返回状态文本 = “710 设置协议头失败!”




处理事件 ()




返回状态文本 = “705 设置超时时间失败!”



处理事件 ()



返回状态文本 = “704 创建WinHttp请求失败!”


处理事件 ()


返回状态文本 = “703 创建WinHttp连接失败!”

处理事件 ()

返回状态文本 = “702 创建WinHttp会话失败!”
处理事件 ()
返回状态文本 = “701 解析URL地址失败!”
处理事件 ()
返回状态文本 = “700 当前系统不支持WinHttp服务!”WinHttpCloseHandle (局_请求句柄)
WinHttpCloseHandle (局_连接句柄)
WinHttpCloseHandle (局_会话句柄)
返回 (局_网页内容)
词条作者信息 使用例程
