[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[原创] VBS版IE脚本调试

可能很多人已经用过 InternetExplorer.Application 对象自己打开IE窗口访问网址,想干嘛就干嘛,很方便。
但是对于别人已经打开的IE窗口怎么去搞呢?有时候需要知道或者改变这些页面里某些隐藏域的值,甚至篡改代码来实现各种好的坏的目的又该怎么办?
此脚本就是为了帮这些忙的,区别于高版本IE已经自带的调试功能,功能和体验上差了点,但是更隐密,可控制性更强。
要实现各种精彩的效果,还需要你自己懂网页相关的知识,此脚本仅提供一个可操作的途径而已。

局限性:
1. 因窗口是从 Shell.Application 提供的,因此只能找到 IE 的,其他浏览器不行(没有测试过基于IE内核的浏览器)。
2. 少数网页脚本比较杂,可能无法添加执行脚本,但是可以对其内容进行操作。
  1. ' 查找所有的对象
  2. ies = GetInternetExplorerObjects()
  3. ' 随便取一个窗口,演示手工录入脚本进行调试
  4. Set d = ies(0).document
  5. MsgBox "在弹出的命令行窗口中录入一些VBS脚本(可多行),在此页面执行:" & vbCrLf & vbCrLf & d.title & vbCrLf & d.location.href
  6. AppendScript d, 0, 0, InputScript()
  7. MsgBox "现在重新录入一些JS脚本,在此页面执行:" & vbCrLf & vbCrLf & d.title & vbCrLf & d.location.href
  8. AppendScript d, 1, 0, InputScript()
  9. ' 演示IE浏览内容监控,此实例为监控“批处理之家”网站
  10. vbs = "MsgBox ""禁止访问“批处理之家”网站!此页面即将倒置:"" & document.title, 16, ""网警提示"""
  11. js = "document.body.style.filter = 'progid:DXImageTransform.Microsoft.BasicImage(grayscale=0,xray=0,mirror=1,invert=0,opacity=1,rotation=2)';"
  12. MsgBox "下面即将开始监控,要停止请在任务管理器结束进程 wscript.exe 。", 32
  13. ON ERROR RESUME NEXT
  14. Do
  15. ies = GetInternetExplorerObjects()
  16.     ' 遍历
  17.     For i = 0 To ubound(ies)
  18.         If isObject(ies(i)) Then
  19.             Set objIE = ies(i)
  20.             Set document = objIE.Document
  21.             ' 判断此页面的域名
  22.             If UCase(document.domain) = "BATHOME.NET" Then
  23.                 ' 改变标题
  24.                 objIE.ExecWB 28, 0, "禁止访问", 0
  25.                 ' 插入VBSCRIPT脚本并执行
  26.                 AppendScript document, 0, 0, vbs
  27.                 ' 插入JAVASCRIPT脚本并执行
  28.                 AppendScript document, 1, 0, js
  29.             End If
  30.         End If
  31.     Next
  32.     ' 10秒钟检查一次
  33.     WScript.Sleep 10000
  34. Loop
  35. '===============================================================================
  36. '*** 获取所有包含网页文档的窗口
  37. '*-----------------------------------
  38. Function GetInternetExplorerObjects()
  39.     Dim ie()
  40.     ReDim ie(0)
  41.     Dim sa, windows, window
  42.     Set sa = CreateObject("Shell.Application")
  43.     Set windows = sa.Windows
  44.     For Each window In windows
  45.         If UCase(TypeName(window.document)) = "HTMLDOCUMENT" Then
  46.             Dim obj
  47.             Set obj = window
  48.             If isObject(ie(UBound(ie))) Then ReDim Preserve ie(UBound(ie) + 1)
  49.             Set ie(UBound(ie)) = obj        
  50.         End If
  51.     Next
  52.     GetInternetExplorerObjects = ie   
  53. End Function
  54. '*** 添加一段脚本到网页并且立即执行
  55. '* document        :  一个 document 对象实例
  56. '* scriptType      :  0 = VBScript, 1 = JavaScript
  57. '* isTextOrSource  :  0 = 脚本, 1 = 脚本文件
  58. '* content         :  源代码 / 脚本文件路径或者远程URL
  59. '*------------------------------------------------------------------
  60. Function AppendScript(document, scriptType, isTextOrSource, content)
  61.     Dim sType
  62.     Select Case scriptType
  63.         Case 0        sType = "text/vbscript"
  64.         Case 1        sType = "text/javascript"
  65.         Case Else    sType = ""
  66.     End Select
  67.     Set script = document.createElement("script")
  68.     script.setAttribute "type", sType
  69.     If isTextOrSource = 1 Then
  70.         script.src  = content
  71.     Else
  72.         script.text = content
  73.     End If
  74.     Set AppendScript = document.appendChild(script)
  75. End Function
  76. '*** 打开一个命令行界面获取输入内容
  77. '*---------------------------------
  78. Function InputScript()
  79.     Dim s, ws, exe
  80.     s = "TITLE 输完几行代码回车后,按Ctrl+Z回车,或者直接关闭本窗口。& TYPE CON"
  81.     Set ws = CreateObject("WScript.Shell")
  82.     Set exe = ws.Exec("CMD /C " & s)
  83.     InputScript = exe.StdOut.ReadAll()
  84. End Function
复制代码
实例中只是根据网址域名来判断,但实际上我们已经取得了 document 对象,如果你懂 HTML 相关知识就会知道,你可以基本上可以做任何事情了。
2

评分人数

转载自zqz0012005的博客
  1. '防止Google对搜索结果重定向
  2. On Error Resume Next
  3. Set sh = CreateObject("Shell.Application")
  4. do
  5.     RemoveGoogleRedirect
  6.     WScript.sleep 1000*3
  7. loop
  8. function RemoveGoogleRedirect()
  9.   Dim wnds, wnd, document, el, sc
  10.   Set wnds = sh.Windows()
  11.   For Each wnd In wnds
  12.     if InStr(1,wnd.LocationURL,"http://www.google.com.hk",1) then
  13.         set document = wnd.document
  14.         if document.readyState="complete" then
  15.             set el = Nothing
  16.             set el = document.getElementById("RemoveGoogleRedirect")
  17.             if el Is Nothing then
  18.                 set sc = document.createElement("script")
  19.                 sc.id = "RemoveGoogleRedirect"
  20.                 sc.text = "function rwt(){return true;}"
  21.                 document.body.appendChild(sc)
  22.             end if
  23.         end if
  24.     End If
  25.   Next
  26. end function
复制代码

TOP

MSDN
Windows Method
--------------------------------------------------------------------------------
Creates and returns a ShellWindows object. This object represents a collection of all of the open windows that belong to the Shell.

如果explorer.exe进程被结束过,原来打开的ie窗口就获取不到了。像我经常干这种事,所以很多ie窗口访问不了,郁闷,找不到一个更好的方法。

TOP

VBS版IE脚本调试

TOP

十年前的,没人看吗?ie8无法获取元素,有没有人搞搞ie自动化的?!

TOP

返回列表