• 新浪微博:
  • 微信 :
按键精灵电脑版
立即下载

软件版本:2014.05
软件大小:21.6M
更新时间:07-04

按键精灵安卓版
立即下载

软件版本:3.2.9
软件大小:62.5M
更新时间:12-07

按键精灵iOS版
立即下载

软件版本:1.3.1
软件大小:29.2M
更新时间:09-29

按键精灵Mac版
立即下载

软件版本:1.1.0
软件大小:12.3M
更新时间:12-29

快捷导航

登录 后使用快捷导航
没有帐号? 注册

登录 注册
返回列表 12345678» / 14
发新话题 回复该主题

[源码] WinHttp中文版网页协议命令库,支持Get,Post,协议头,Cookie处理,... [复制链接]

1#
本帖最后由 q97012791 于 2014-11-4 14:26 编辑

作者 : QQ97012791
按键精灵接单群: 6820131


命令库截图,大体功能一目了然,需要就拿去吧,命令库在帖子最下方,回复可见
命令库里已经写了详细说明,就不在这里重复写了,打开命令库就可以看到




这里给个例子[获取按键论坛积分示例]:
  1. //获取按键论坛积分示例
  2. //-----------------------
  3. 账号 = "按键精灵论坛账号"
  4. 密码 = "按键精灵论坛密码"
  5. //-----------------------
  6. 地址1 = "http://bbs.anjian.com/member.php?mod=logging&action=login&loginsubmit=yes&infloat=yes&lssubmit=yes&inajax=1"
  7. 地址2 = "http://bbs.anjian.com/home.php?mod=spacecp&ac=credit&showcredit=1&inajax=1&ajaxtarget=extcreditmenu_menu"
  8. 提交数据 = "username=" & 账号 & "&password=" & 密码 & "&quickforward=yes&handlekey=ls"
  9. //Post登录账号
  10. 返回数据 = Lib.旋_WinHttp.简易_Post访问(地址1, 提交数据, "", "", 0, 0)
  11. //Get访问积分页面
  12. 返回数据 = Lib.旋_WinHttp.简易_Get访问(地址2, 0, 0)
  13. //正则表达式提取网页文本
  14. Set regEx = New RegExp
  15. regEx.IgnoreCase = True
  16. regEx.Multiline = True
  17. Execute "regEx.Global = True"
  18. regEx.Pattern = "||<[^>]+>|&.{1,8};"
  19. //输出结果
  20. MessageBox regEx.Replace(返回数据(1), "")
复制代码
运行后:



命令库下载 [回复可见]:


旋_WINHTTP.rar (, 下载次数:352)

旋_WINHTTP命令库(带帮助).rar (, 下载次数:392)



作者 : QQ97012791
按键精灵接单群: 6820131



网页协议相关知识:

在WINDOWS平台,可以实现HTTP访问的对象和API很多,一般常见的有下面几种

API 方式 WinINet, WinHTTP, WinSock, ws2_32
对象方式 MSXML2.XMLHTTP, Microsoft.XMLHTTP, WinHttp.WinHttpRequest, MSXML2.ServerXMLHTTP

先来了解一下,这些东西都是什么

Winsock:

工作于网络层和传输层的开发库,对于编写TCP,UDP,以及原始IP通信程序非常合适。函数原形也基本符合Unix socket标准。Windows平台上的大多数程序,如QQ,讯雷等都基于其开发,依赖于winsock.dll。但winsock很麻烦,要自己拼接,解压,工作量非常庞大。

ws2_32:

Windows Sockets应用程序接口, 用于支持Internet和网络应用程序,是Winsock的升级版本,在兼容的基础上增加了不符合Unix socket标准,但更适合Windows平台的库函数,一般以WSA*开头,现代的大多数Windows平台程序也都开始依赖于此库,依赖于ws2_32.dll。

WinInet:

Windows Internet扩展库,工作于应用协议层,提供了http,ftp,gopher协议的实现,为基于以上三种协议的程序开发提供基础平台,需要说明的是,尽管WinInet工作于应用层,但其本身wininet.dll的实现并不依赖于winsock.dll或ws2_32.dll,而是独立存在的(WinInet.dll)。至少目前的版本是这样。基于WinInet的应用程序最著名的例子就是IE了。WinINet是一种比WinHTTP更老的技术, 它被设计为一个HTTP客户端平台, 用于交互式桌面应用程序。

WinHttp:

也是工作于应用协议层,提供了http协议的实现。看起来与WinInet有重复的部分,没错,WinHttp就是为了替换WinInet中的http部分的,WinHTTP比WinINet更加安全和健壮,而且还为http服务器端开发提供了库函数,可以这么认为WinHTTP是WinINet的升级版本。如果进行现代http的开发,建议使用WinHTTP而不是WinInet。使用WinHTTP进行开发的著名例子就是Google的浏览器Chrome,但是Chrome2.0以后版本google放弃了winhttp而是使用了自己开发的http库,这也是为了使chrome实现跨平台的重要举措。另外,WinHttp.dll也不依赖于winsock或ws2_32,也是独立运行的。WinHTTP提供了两种编程方式, 一种是API, 另一种是COM组件(对象)。

XMLHTTP 对象:

XMLHTTP为客户端应用程序而设计,并依赖于基于Microsoft Win32 Internet (WinInet) 而构建的URLMon。ServerXMLHTTP为服务器应用程序而设计,并依赖于新的HTTP客户端堆栈WinHTTP。ServerXMLHTTP提供了可靠性和安全性,并且是服务器安全的。

API方式由于在按键里实现起来非常麻烦(有的参数需要以结构体的方式传入按键精灵目前不支持),
所以这里就不讲API方式了,那么对象方式,这几个又有什么区别呢?

"Microsoft.XMLHTTP" 微软官网上说这是MSXML 2.x系列版本的progid。比较古老,简单用用可以。
"MSXML2.XMLHTTP" 相当于 "MSXML2.XMLHTTP.3.0"
"Msxml2.XMLHTTP.4.0"
“Msxml2.XMLHTTP.5.0"
"Msxml2.XMLHTTP.6.0"

以上几个对象,在不同系统中不一定都存在,使用前可以测试一下,一般的说,安装了office 2007之后,除了4.0,别的应该都可以使用的。
上述对象依赖于Microsoft Win32 Internet (WinInet),与IE同内核的,他们的COOKIE和缓存是和IE共用的,要是你能解决跨域问题,用IE登录某站后,再用他们登录也会是登录状态的。所以他们和IE一样是有本地缓存的,同一网页缓存未过期,请求过一次再次请求会很快。因为这时是直接读取了缓存数据。
这也是为什么有些人用这个组件做实时数据抓取的时候,发现网页数据已刷新,而使用代码采集到的数据却更新不及时的原因。
MSXML2.XMLHTTP访问网页可以一般很方便cookie是自动处理,用setRequestHeader方法可以指定其他http头但不能指定cookie。5.0之后可以指定cookie。但Msxml2.XMLHTTP.6.0版本不能设置referer的(好像微软出于安全原因给去掉了),今天测试发现5.0也没有Referer。

"WinHttp.WinHttpRequest.5.1"

WinHTTP比WinINet更加安全和健壮,这个组件独立于IE,没有本地缓存,其代理服务器的设置也是独立于IE的(使用Proxycfg.exe程序设置代理),支持网页重定向,支持修改Cookie和referer,该组件支持HTTPS。Winhttp使用起来适应性最广,参数较多。
WinHTTP在编码转换上与其他组件不同的是,返回的Head如果没有Content-Type: text/html; charset=utf-8的标识,就不转换UTF-8编码(Win7测试发现),即使返回的数据有UTF-8的BOM头(239,187,191)也不转换。

"Msxml2.ServerXMLHTTP"
"Msxml2.ServerXMLHTTP.3.0"
"Msxml2.ServerXMLHTTP.4.0"
"Msxml2.ServerXMLHTTP.5.0"
"Msxml2.ServerXMLHTTP.6.0"

这个对象依赖于 HTTP 客户端堆栈 WinHTTP,所以很多用法与WinHttp类似。
ServerXMLHTTP可以用SetTimeouts自定义超时,XMLHTTP是默认超时。
ServerXMLHTTP在内部支持重定向,可以跨域访问,即你访问的地址如果跳到另外的域名去了,它也可以继续请求页面,而XMLHTTP会抛出异常,说:禁止访问
如果你用的是MSXML2.ServerXMLHTTP.4.0及更高版本的对象,那么可以用.getOption(-1) 来获得最终页面地址 http://support.microsoft.com/kb/308607/zh-cn
新版ServerXmlhttp的referer也被微软封掉了

WinHttpRequest object 相关资料
http://msdn.microsoft.com/en-us/ ... 6%28v=vs.85%29.aspx

WinHttpRequestOption enumeration 相关资料
http://msdn.microsoft.com/en-us/library/aa384108.aspx

WinHttp.WinHttpRequest.5.1 相关资料
http://www.playes.net/Blog/595.asp

总结:

论稳定性和功能强大,依次排序:
WinHTTP>ServerXMLHTTP>MSXML2.XMLHTTP>Microsoft.XMLHTTP
所以,我们只需要用WinHTTP就可以了

    已有2评分我要评分查看所有评分

    <font size="4"><font color="Red"><strong>承接:各类游戏辅助,网页,Post,办公脚本,验证码,注册机,手机脚本,插件定制,软件定制等业务!<br />
    QQ:97012791 接单群:6820131</strong></font></font>
    2#

    觀看學習

    3#


    4#

    顶一个

    Q228293067
    5#

    感谢 分享

    大话西游2 脚本制作 源码 内存数据 QQ50080338
    6#

    正在找这个,昨天都没找到, 自己写了基本的代码, 今天居然有了插件了,不错

    1777922
    7#

    好东西,很有用!!!

    8#
    9#


    求解咋回事


    义错误:脚本 我的脚本1 ,第0行:没有找到库文件C:\Program Files\按键精灵2014\lib\旋_WINHTTP.QMLE。错误附加码=2786
    语义错误:脚本 我的脚本1 ,第5行:没有找到目标。错误附加码=844:0
    语义错误:脚本 我的脚本1 ,第5行:无法计算取值。错误附加码=779:115
    语义错误:脚本 我的脚本1 ,第6行:没有找到目标。错误附加码=844:0
    语义错误:脚本 我的脚本1 ,第6行:无法计算取值。错误附加码=779:115

    10#

    求解咋回事


    脚本 我的脚本1 ,第0行:没有找到库文件C:\Program Files\按键精灵2014\lib\旋_WINHTTP.QMLE。错误附加码=2786
    脚本 我的脚本1 ,第5行:没有找到目标。错误附加码=844:0
    脚本 我的脚本1 ,第5行:无法计算取值。错误附加码=779:115
    脚本 我的脚本1 ,第6行:没有找到目标。错误附加码=844:0
    脚本 我的脚本1 ,第6行:无法计算取值。错误附加码=779:115

    11#

    该用户帖子内容已被屏蔽

    12#

    谢谢

    13#

    kankan我也想看看,学习一下

    14#

    学习学习...............

    15#


    承接网页按键,办公脚本,交换机批量操作等各种业务。详联QQ:37518615 定制源码+注释+培训。
    16#

    感谢楼主的分享,谢谢您啊啊啊

    注册的早,学的晚...没想到这么好用,努力中ing
    17#


    18#

    see see

    19#

    Good Good Good Good Good Good Good Good

    20#

    看一下老大的帖子!哈哈,支持

    发新话题 回复该主题