发表回复 
操作网页
2009-09-18, 10 : 30
操作网页
[i=s] 本帖最后由 linpinger 于 2010-6-8 22:10 编辑 [/i]

写该文的目的:

看到论坛中有不少的朋友都问了这样的问题:
怎么实现自动登录某网页?
怎么点击网页中的某个按钮?

这些问题的目的都是为了能自动操作网页中的元素

能达到这些目的的语言就是JavaScript,一种脚本语言(现在估计没有哪个网页没有使用JS的)
有关JS的教程可以在这个网站学习(公认的比较好的学习网站):http://www.w3school.com.cn/

现在我们就想通过AutoHotKey来操作 JS语言

方法1:
搜索Google知道可以直接在地址栏中运行JS代码(试验IE6可以,IE7不行,IE8没试过)
方法:在地址栏中输入
jJS代码
然后回车
例子:
显示页面的所有文字:
jalert(document.body.innerText);


用这种方法可以达到大部分的目的,不过还是感觉很不方便,例如,有些代码运行不了,不好获得返回值
有需求就有进步

方法2:
于是,通过搜索,在AHK官方论坛上找到了 IE_injectJS函数(依赖com.ahk及acc.ahk,均在附件中,解压到autohotkey.exe所在目录下), 可见下面的链接
http://www.autohotkey.com/forum/topic25473.html
其原理,是通过COM来直接操作网页(可以后台操作哦,也就是说无论IE窗口是不是在最前,都不影响)
代码: (全选)
F1::
daima =
(
alert(fanhui=document.body.innerText);

)
aaa := IE_InjectJS(winexist("A"), daima,"fanhui")
msgbox, %aaa%
return
附件中还有一个生成IE并控制该页面的例子

OK,现在可以往IE中注入JS了,也就可以通过JS实现自动登录,自动点击等功能



第一次发这种帖子,有点乱,呵呵,希望可以帮到大家


附件
.7z  com操作网页.7z (大小: 12.38 KB / 下载: 439)

★作品页★
访问这个用户的网站 查找这个用户的全部帖子
表示感谢 引用并回复 移动视图置页面顶端
2009-09-18, 10 : 36
 
慢慢求索中!量变到质变的过程是比较煎熬的!
查找这个用户的全部帖子
表示感谢 引用并回复 移动视图置页面顶端
2009-09-18, 10 : 43
 
下面贴个自动登录163邮箱的脚本:
代码: (全选)
F1::
; 用IE打开下面的地址
; http://mail.163.com/

chuangkouid := winexist("A") ; 当前窗口的ID,务必使IE在最前
; JS代码
YongHuMing := "你的用户名"
MiMa := "你的密码"

daima=
(
document.getElementsByName("username")[0].value="%YongHuMing%";
document.getElementsByName("password")[0].value="%MiMa%";
document.getElementsByName("登录邮箱")[0].click();
)
ie_injectJS(chuangkouid, daima)

return

★作品页★
访问这个用户的网站 查找这个用户的全部帖子
表示感谢 引用并回复 移动视图置页面顶端
2009-09-18, 10 : 50
 
自己还写了一些

将IE控件嵌入到GUI中,并可操作该页面的脚本

探测页面中的input,以及链接信息的脚本,便于写相关脚本

看要的人多的话,就贴出来,有点占版面的说

★作品页★
访问这个用户的网站 查找这个用户的全部帖子
表示感谢 引用并回复 移动视图置页面顶端
2009-09-18, 13 : 34
 
不错,不过我一般登录类喜欢直接建一个新的HTM文件。

以下是我写的切换百度荣光医院小号绝对不会被封被发现的脚本。
代码: (全选)
帐号:="XXX"
  密码:="XXX"
  保持登录状态:="true"
  登录网址:="http://apps.hi.baidu.com/ronhospital"    ;荣光医院
  ConnectionName:="ADSL"
  ADSL帐号:="XXX"
  ADSL密码:="XXX"
  
  Process,exist,TheWorld.exe
  if ErrorLevel
- {
      MsgBox,继续操作会影响TheWorld正常运行,程序将强制退出!
      ExitApp
  }   ;不破坏联网程序正常工作
  
  RegRead,Cookies目录,HKCU,Software\Microsoft\Windows\CurrentVersion\Explorer\S​hell Folders,Cookies
  If ErrorLevel=1
- {
      MsgBox,Cookies目录无法读取,程序将强制退出!
      ExitApp
  }
  FileDelete,%Cookies目录%\*baidu*    ;删除百度相关Cookies
  
  旧IP=%A_IPAddress1%
  Loop
- {
      If not (A_IPAddress1="127.0.0.1")
      RunWait,RASDIAL /D,,Hide
      Sleep,1000  ;这一个延时去掉也不会变更快,反而加重CPU负担
      RunWait,RASDIAL %ConnectionName% %ADSL帐号% %ADSL密码%,,Hide
      新IP=%A_IPAddress1%
      If not (新IP="127.0.0.1" or 新IP=旧IP)
      Break
  }   ;确认新IP和旧IP不同
  MsgBox,旧IP:%旧IP%`n新IP:%新IP%
  
  RegRead,IE临时文件目录,HKCU,Software\Microsoft\Windows\CurrentVersion\Explorer\Sh​ell Folders,Cache
  If ErrorLevel=1
- {
      MsgBox,IE临时文件目录无法读取,程序将强制退出!
      ExitApp
  }   ;取IE临时文件目录
  
  Loop
- {
      Random,随机数,0,88888888
      IfNotExist,%IE临时文件目录%\%随机数%.htm
      Break
  }   ;确认之后将被创建的随机数文件不存在于IE临时文件目录
  
  FileAppend,
- (
  <FORM action=http://passport.baidu.com/?login method=post>
  <INPUT id=username name=username type="hidden" value="%帐号%">
  <INPUT id=password name=password type="hidden" value="%密码%">
  <INPUT id=mem_pass name=mem_pass type="checkbox" style="display:none" checked=%保持登录状态%>
  <INPUT id=u name=u type="hidden" value="%登录网址%">
  </FORM>
  <script>document.forms[0].submit();</SCRIPT>
  ),%IE临时文件目录%\%随机数%.htm ;创建提交表单用HTM文件
  
  Run,%IE临时文件目录%\%随机数%.htm
  ExitApp
查找这个用户的全部帖子
表示感谢 引用并回复 移动视图置页面顶端
2009-09-18, 13 : 40
 
上面的代码要是看起来混乱,就下载下面这个代颜色的HTML文件


附件
.rar  1.rar (大小: 1.91 KB / 下载: 61)
查找这个用户的全部帖子
表示感谢 引用并回复 移动视图置页面顶端
2009-09-29, 09 : 56
 
对于 天堂之门 的 【2009年01月22日更新】用 JavaScript 提交表单来登陆 163 免费邮箱 帖子,
http://forum.ahkbbs.cn/thread-343-1-2.html

有个改进的办法(需要com.ahk),没有生成临时文件:
代码: (全选)
html =
(
<form action=https://reg.163.com/logins.jsp?url=http://fm163.163.com/coremail/fcg/ntesdoor2 method=post name=s>
<input type=hidden name=username value=***>
<input type=hidden name=password value=***>
</form>
<script language=javascript>document.s.submit()</script>
)

COM_init()
pdoc := COM_CreateObject("{25336920-03F9-11CF-8FD0-00AA00686F13}")
COM_Invoke(pdoc, "write", html)
COM_Invoke(pdoc, "close")
com_release(pdoc)

★作品页★
访问这个用户的网站 查找这个用户的全部帖子
表示感谢 引用并回复 移动视图置页面顶端
2009-09-29, 10 : 05
 
对于这类需要自动登录的,可以使用上面的办法,但是不容易获得新窗口的句柄(虽然可以使用winexit("标题"))
推荐使用,ie_injectJS代码,能够通过JS操作网页,基本上“万能”啊,如果你掌握了IE_injectJS的原理,你自己能够在脚本中更加灵活的运用,这里就​不写了,只是强烈推荐各位,好好研究一下该函数

★作品页★
访问这个用户的网站 查找这个用户的全部帖子
表示感谢 引用并回复 移动视图置页面顶端
[+] 1用户表示感谢linpinger
2009-11-06, 12 : 36
 
做个标记,以后来看

目前本人所有的代码都是L版的.
查找这个用户的全部帖子
表示感谢 引用并回复 移动视图置页面顶端
2010-03-26, 01 : 14
 
IE8,出现图中错误,求助


附件 缩略图
   
查找这个用户的全部帖子
表示感谢 引用并回复 移动视图置页面顶端
2010-06-05, 16 : 31
 
IE_injectJS和COM,ACC那几个全英文,根本不知怎么用,官网上好东西全是英文的,这英语差了就是郁闷
查找这个用户的全部帖子
表示感谢 引用并回复 移动视图置页面顶端
2010-06-08, 22 : 07
 
[i=s] 本帖最后由 linpinger 于 2010-6-8 22:13 编辑 [/i]

现在都用autohotkey_L来操作网页了
顶楼的做法比较原始了,现在进化了,不过不想修改它,毕竟是曾经的历史

http://www.autohotkey.net/~Lexikos/AutoHotkey_L/
http://www.autohotkey.net/~Lexikos/AutoH...key_La.zip

注意:最新版的ahk_L要求脚本文件的编码是UTF-8哦


例子:
代码: (全选)
IEL_new("http://www.baidu.com")  ; 新开一个IE并跳转
document.getElementById("kw").value := "ahk 中文论坛"   ; 填搜索框
document.getElementById("su").click()                   ; 按按钮
IEL_nav()  ; 等待载入完毕
库放在顶楼里面的附件里面

最近发现了一种新的操作网页的方法,更直接,模拟GET/POST
有兴趣的同学,可以到官网上搜搜

★作品页★
访问这个用户的网站 查找这个用户的全部帖子
表示感谢 引用并回复 移动视图置页面顶端
2010-06-09, 12 : 16
 
AHK_L 和U的urldownload函数无效啊,很是头疼。。。

所有脚本存至项目: https://github.com/health901/AHK, 欢迎fork
查找这个用户的全部帖子
表示感谢 引用并回复 移动视图置页面顶端
2010-06-12, 20 : 01
 
有urldownload这个函数吗?

★作品页★
访问这个用户的网站 查找这个用户的全部帖子
表示感谢 引用并回复 移动视图置页面顶端
2010-09-10, 00 : 27
 
[i=s] 本帖最后由 youarezz_AHK 于 2010-9-10 00:41 编辑 [/i]

autohotkey_L怎么用,直接下载下来的AutoHotkey.exe是怎么用的?
查找这个用户的全部帖子
表示感谢 引用并回复 移动视图置页面顶端
2011-03-13, 22 : 25
 
多谢楼主为我们提出了摸索的思路。
查找这个用户的全部帖子
表示感谢 引用并回复 移动视图置页面顶端
2011-03-22, 20 : 20
 
- 好难 理解。:curse:
查找这个用户的全部帖子
表示感谢 引用并回复 移动视图置页面顶端
2011-05-27, 09 : 33
 
大大們好:
請問假如要取出某網頁的內容文字, 該如何做呢?
例如交友網站的好友名單, 我想取出他的連結~~
謝謝大家~
查找这个用户的全部帖子
表示感谢 引用并回复 移动视图置页面顶端
2011-05-27, 09 : 57
 
连接网站
保存网页为文本文件
手动分析html 取出想要取的内容
查找这个用户的全部帖子
表示感谢 引用并回复 移动视图置页面顶端
2011-05-28, 03 : 34
 
這方法也是可以~
不過不知有無更快速的方式~~?
謝謝 ddandyy
查找这个用户的全部帖子
表示感谢 引用并回复 移动视图置页面顶端
发表回复 


论坛跳转:


联系我们 | Autohotkey 中文站 | 回到顶部 | 回到正文区 | 精简(归档)模式 | RSS 聚合