|
发表于 2020-7-3 01:15:17
|
显示全部楼层
四川省眉山市
模块版本:8.3.0
所用系统:Win7 64位)
命令名称:网页_访问 网页_访问S 网页_访问_对象
BUG描述:多线程使用代理IP 设置的超时时间部分线程无效 在代理有效的情况下
- * “耗时:” | 577.000000
- * “耗时:” | 577.000000
- * “耗时:” | 624.000000
- * “发送数据耗时:” | 562.000000
- * “耗时:” | 624.000000
- * “耗时:” | 655.000000
- * “耗时:” | 671.000000
- * “发送数据耗时:” | 27269.000000
- * “耗时:” | 27347.000000
- * “发送数据耗时:” | 219.000000
- * “耗时:” | 265.000000
- * “发送数据耗时:” | 249.000000
- * “发送数据耗时:” | 296.000000
- * “发送数据耗时:” | 328.000000
- * “耗时:” | 344.000000
- * “发送数据耗时:” | 265.000000
- * “发送数据耗时:” | 296.000000
- * “耗时:” | 422.000000
- * “发送数据耗时:” | 405.000000
- * “发送数据耗时:” | 327.000000
- * “耗时:” | 358.000000
- * “耗时:” | 452.000000
- * “发送数据耗时:” | 406.000000
- * “耗时:” | 437.000000
- * “耗时:” | 561.000000
- * “耗时:” | 546.000000
- * “耗时:” | 515.000000
- * 1
- * “发送数据耗时:” | 265.000000
- * “耗时:” | 281.000000
- * 58
- * “发送数据耗时:” | 219.000000
- * “发送数据耗时:” | 28329.000000
- * “耗时:” | 327.000000
- * “发送数据耗时:” | 266.000000
- * “耗时:” | 28424.000000
- * 57
- * “发送数据耗时:” | 312.000000
- * “耗时:” | 422.000000
- * “发送数据耗时:” | 375.000000
- * 56
- * 56
- * “发送数据耗时:” | 421.000000
- * “发送数据耗时:” | 406.000000
- * “耗时:” | 499.000000
- * “耗时:” | 514.000000
- * “耗时:” | 562.000000
- * “耗时:” | 624.000000
- * 54
- * “发送数据耗时:” | 1248.000000
- * 53
- * “耗时:” | 1326.000000
- * 52
- * 51
- * 51
- * “发送数据耗时:” | 29235.000000
- * “耗时:” | 29282.000000
- * 49
- * “发送数据耗时:” | 29796.000000
- * “耗时:” | 29843.000000
- * 48
- * “发送数据耗时:” | 30483.000000
- * “耗时:” | 30545.000000
- * 47
- * “发送数据耗时:” | 4243.000000
- * “耗时:” | 4290.000000
复制代码
- .版本 2
- .支持库 spec
- .子程序 网页_访问_对象, 字节集, 公开, 使用WinHttp的对象方式访问网页
- .参数 网址, 文本型, , 完整的网页地址,必须包含http://或者https://
- .参数 访问方式, 整数型, 可空, 0=GET 1=POST 2=HEAD 3=PUT 4=OPTIONS 5=DELETE 6=TRACE 7=CONNECT
- .参数 提交信息, 文本型, 可空, "POST"专用 自动UTF8编码
- .参数 提交Cookies, 文本型, 参考 可空, 设置提交时的cookie
- .参数 返回Cookies, 文本型, 参考 可空, 返回的Cookie
- .参数 附加协议头, 文本型, 可空, 一行一个请用换行符隔开
- .参数 返回协议头, 文本型, 参考 可空, 返回的协议头
- .参数 返回状态代码, 整数型, 参考 可空, 网页返回的状态代码,例如:200;302;404等
- .参数 禁止重定向, 逻辑型, 可空, 默认不禁止网页重定向
- .参数 字节集提交, 字节集, 可空, 提交字节集数据
- .参数 代理地址, 文本型, 可空, 代理地址,格式为 8.8.8.8:88
- .参数 超时, 整数型, 可空, 秒|默认为15秒,-1为无限等待
- .参数 代理用户名, 文本型, 可空, 用户名
- .参数 代理密码, 文本型, 可空, 密码
- .参数 代理标识, 整数型, 可空, 代理标识,默认为1,0为路由器
- .参数 对象继承, 对象, 可空, 此处可自行提供对象,不再主动创建
- .参数 是否自动合并更新Cookie, 逻辑型, 可空, 默认为真,自动合并更新
- .参数 是否补全必要协议头, 逻辑型, 可空, 当附件协议头为空时自动添加必要的UA协议头 默认为真,假将不再添加非传入协议头
- .参数 是否处理协议头大小写, 逻辑型, 可空, 将协议头中的键名首字母处理为大写 默认为真
- .局部变量 局_访问方式, 文本型
- .局部变量 局_WinHttp, 对象
- .局部变量 局_发送协议头, 文本型, , "0"
- .局部变量 局_返回协议头, 文本型, , "0"
- .局部变量 局_计次, 整数型
- .局部变量 局_网页数据, 字节集
- .局部变量 局_变体提交, 变体型
- .局部变量 局_附加协议头, 文本型
- .局部变量 tt, 整数型
- .局部变量 tt1, 整数型
- tt = 取启动时间 ()
- .如果真 (是否为空 (是否自动合并更新Cookie))
- 是否自动合并更新Cookie = 真
- .如果真结束
- .如果真 (是否为空 (是否补全必要协议头))
- 是否补全必要协议头 = 真
- .如果真结束
- .如果真 (是否为空 (是否处理协议头大小写))
- 是否处理协议头大小写 = 真
- .如果真结束
- 线程_初始化COM库 ()
- .如果真 (访问方式 < 0 或 访问方式 > 7)
- 访问方式 = 0
- .如果真结束
- 局_访问方式 = 多项选择 (访问方式 + 1, “GET”, “POST”, “HEAD”, “PUT”, “OPTIONS”, “DELETE”, “TRACE”, “CONNECT”)
- .判断开始 (是否为空 (对象继承))
- .如果真 (局_WinHttp.创建 (“WinHttp.WinHttpRequest.5.1”, ) = 假)
- 返回 ({ })
- .如果真结束
- .默认
- 局_WinHttp = 对象继承
- .判断结束
- 超时 = 6
- .如果真 (超时 ≠ -1)
- .如果 (超时 < 1)
- 超时 = 15000
- .否则
- 超时 = 超时 × 1000
- .如果结束
- 局_WinHttp.方法 (“SetTimeouts”, 超时, 超时, 超时, 超时)
- .如果真结束
- .如果真 (代理地址 ≠ “”)
- 局_WinHttp.方法 (“SetProxy”, 2, 代理地址)
- .如果真结束
- tt1 = 取启动时间 ()
- 局_WinHttp.方法 (“Open”, 局_访问方式, 网址, 假)
- .如果真 (取启动时间 () - tt1 ≥ 5000)
- 调试输出 (“打开连接耗时大于5秒,返回。”)
- 局_WinHttp.清除 ()
- 线程_取消COM库 ()
- 返回 (局_网页数据)
- .如果真结束
- .如果真 (禁止重定向)
- 局_WinHttp.写属性 (“Option”, 6, 0)
- .如果真结束
- 局_WinHttp.写属性 (“Option”, 4, 13056) ' 忽略错误标志
- 局_附加协议头 = 附加协议头
- .如果真 (是否补全必要协议头)
- .如果真 (寻找文本 (局_附加协议头, “Accept:”, , 真) = -1)
- 局_附加协议头 = 局_附加协议头 + #换行符 + “Accept: */*”
- .如果真结束
- .如果真 (寻找文本 (局_附加协议头, “Referer:”, , 真) = -1)
- 局_附加协议头 = 局_附加协议头 + #换行符 + “Referer: ” + 网址
- .如果真结束
- .如果真 (寻找文本 (局_附加协议头, “Accept-Language:”, , 真) = -1)
- 局_附加协议头 = 局_附加协议头 + #换行符 + “Accept-Language: zh-cn”
- .如果真结束
- .如果真 (寻找文本 (局_附加协议头, “User-Agent:”, , 真) = -1)
- 局_附加协议头 = 局_附加协议头 + #换行符 + “User-Agent: Mozilla/4.0 (compatible; MSIE 9.0; Windows NT 6.1)”
- .如果真结束
- .如果真 (访问方式 = 1)
- .如果真 (寻找文本 (局_附加协议头, “Content-Type:”, , 真) = -1)
- 局_附加协议头 = 局_附加协议头 + #换行符 + “Content-Type: application/x-www-form-urlencoded”
- .如果真结束
- .如果真结束
- .如果真结束
- .如果真 (是否处理协议头大小写)
- 局_附加协议头 = 网页_处理协议头 (局_附加协议头)
- .如果真结束
- .如果真 (代理地址 ≠ “” 且 代理用户名 ≠ “”)
- .如果真 (是否为空 (代理标识))
- 代理标识 = 1
- .如果真结束
- 局_WinHttp.方法 (“SetCredentials”, 代理用户名, 代理密码, 代理标识)
- .如果真 (代理标识 = 1)
- 局_WinHttp.方法 (“SetRequestHeader”, “Proxy-Authorization”, “Basic ” + 编码_BASE64编码 (到字节集 (代理用户名 + “:” + 代理密码)))
- .如果真结束
- .如果真结束
- .如果真 (取反 (是否为空 (提交Cookies)))
- .如果真 (取文本长度 (提交Cookies) > 0)
- .如果真 (寻找文本 (提交Cookies, “Cookie:”, , 真) ≠ -1)
- 提交Cookies = 子文本替换 (提交Cookies, “Cookie:”, “”, , , 假)
- .如果真结束
- .如果真结束
- 局_WinHttp.方法 (“SetRequestHeader”, “Cookie”, 提交Cookies)
- .如果真结束
- .判断开始 (寻找文本 (局_附加协议头, #换行符, , 假) = -1)
- 局_WinHttp.方法 (“SetRequestHeader”, 内部_协议头取名 (局_附加协议头), 内部_协议头取值 (局_附加协议头))
- .默认
- 局_发送协议头 = 分割文本 (局_附加协议头, #换行符, )
- .计次循环首 (取数组成员数 (局_发送协议头), 局_计次)
- .如果真 (局_发送协议头 [局_计次] ≠ “”)
- .如果真 (内部_协议头取名 (局_发送协议头 [局_计次]) = “Connection”)
- .如果真 (内部_协议头取值 (局_发送协议头 [局_计次]) = “keep-alive”)
- 到循环尾 () ' 筛选排除此参数 避免协议头有此参数 HTTP对象又自动添加此参数
- .如果真结束
- .如果真结束
- 局_WinHttp.方法 (“SetRequestHeader”, 内部_协议头取名 (局_发送协议头 [局_计次]), 内部_协议头取值 (局_发送协议头 [局_计次]))
- .如果真结束
- .计次循环尾 ()
- .判断结束
- tt1 = 取启动时间 ()
- .判断开始 (字节集提交 = { })
- 局_WinHttp.方法 (“Send”, 提交信息)
- .默认
- 局_变体提交.赋值 (字节集提交, )
- 局_WinHttp.方法 (“Send”, 局_变体提交)
- .判断结束
- 调试输出 (“发送数据耗时:”, 取启动时间 () - tt1)
- 局_网页数据 = 局_WinHttp.读属性 (“ResponseBody”, ).取字节集 ()
- 返回协议头 = 局_WinHttp.读文本属性 (“GetAllResponseHeaders”, )
- 返回状态代码 = 局_WinHttp.读数值属性 (“Status”, )
- 局_WinHttp.读文本属性 (“StatusText”, )
- 局_返回协议头 = 分割文本 (返回协议头, #换行符, )
- 返回Cookies = “”
- .计次循环首 (取数组成员数 (局_返回协议头), 局_计次)
- .如果真 (文本_取左边 (局_返回协议头 [局_计次], “: ”) = “Set-Cookie”)
- .判断开始 (寻找文本 (局_返回协议头 [局_计次], “;”, , 假) ≠ -1)
- 返回Cookies = 返回Cookies + 删首尾空 (文本_取出中间文本 (局_返回协议头 [局_计次], “Set-Cookie:”, “;”)) + “; ”
- .默认
- 返回Cookies = 返回Cookies + 删首尾空 (子文本替换 (局_返回协议头 [局_计次], “Set-Cookie:”, , , , 假)) + “; ”
- .判断结束
- .如果真结束
- .计次循环尾 ()
- .如果真 (取文本左边 (返回Cookies, 2) = “; ”)
- 返回Cookies = 取文本左边 (返回Cookies, 取文本长度 (返回Cookies) - 2)
- .如果真结束
- .如果真 (是否自动合并更新Cookie)
- .如果真 (取反 (是否为空 (提交Cookies)))
- 返回Cookies = 网页_Cookie合并更新 (提交Cookies, 返回Cookies)
- .如果真结束
- .如果真结束
- 局_WinHttp.清除 ()
- 线程_取消COM库 ()
- 调试输出 (“耗时:”, 取启动时间 () - tt)
- 返回 (局_网页数据)
复制代码
我的联系QQ:
@项目部004 |
|