TC官方合作论坛

标题: 问个世界级难题!请高手指点,菜鸟小鸟进来学习 [打印本页]

作者: yvyan    时间: 2012-5-18 22:44
标题: 问个世界级难题!请高手指点,菜鸟小鸟进来学习
正在做新浪微博自动注册的工具,要获取网页上的验证码,然后用TC的图片控件显示在窗体上。

基本思路是,1.首先获得验证码图片--2.保存到本地指定文件夹--3.设置到图片控件
第一步就难住了,因为验证码是不缓存到缓存文件夹里面的,所以无法用拷贝这种传统手段来实现。请大神指教,TC能不能够实现我想要的效果,指点下思路就行了,其它的我来研究。
新浪微博注册地址:http://weibo.com/signup/signup.php?lang=zh-cn

======================================
突然想到 很多浏览器的“保存网页为图片”的功能,特别是基于IE内核开发的浏览器,比如360安全浏览器的截图功能,应该就是调用WebBrowser的截图方法。有点思路了。。

作者: jlklove    时间: 2012-5-18 23:28
学习下
作者: cylhb    时间: 2012-5-18 23:44
用浏览器控件,直接跳转到验证码的连接
http://weibo.com/signup/pincode/ ... cf14f87e9547afe983a
作者: yvyan    时间: 2012-5-19 00:37
回复 3楼cylhb的帖子

验证码是一次有效的,如果先获得网页内容,然后跳转到验证码链接,这时候这个链接是无效的,返回的内容是空的。
作者: cylhb    时间: 2012-5-19 00:53
这是一个问题-.-就算下载下来了,也是跳转了1次了...

-.-控制浏览器的显示范围?只显示验证码部分?

或者是将验证码区域截图..再放到图片控件
作者: yvyan    时间: 2012-5-19 01:18
回复 5楼cylhb的帖子

呵呵,控制浏览器的显示范围,这个是下策,截图在放到图片控件这是下下策。这两个我都想过了,因为我设置的浏览器大小是1,1,等于是在窗体上隐藏浏览器,所以放弃了上面两种方法。
作者: cylhb    时间: 2012-5-19 01:23
-.-确实是难题..
分析下源代码吧,找到验证图片真实连接,下载吧..
作者: mahua1130    时间: 2012-5-19 01:32
看了下   目前的办法就是找到元素 然后大漠前台截图了
作者: yvyan    时间: 2012-5-19 01:46
回复 7楼cylhb的帖子

百度GOOGLE了一晚上,发现有人在做VB开发的时候是调用webbrowser,但是我不懂这个,不知道webbrowser是什么东西,不知道TC支不支持这种原理。

这一篇文章讲的是截取验证码的问题,但是里面的代码我看不懂。
http://tech.ddvip.com/2009-12/1260406038140728.html


问题的链接是 http://zhidao.baidu.com/question/122912233.html


  1. VB怎么截取网页中验证码图片?
  2. 2009-10-25 18:36 提问者: zoand | 浏览次数:1271次
  3. VB中怎么实现将网页上的图片保存到本地?
  4. 还有,怎么截取一些网页登陆界面中的验证码图片?
  5. 或者说用WEBBrowser 打开指定URL后,怎么将其中的
  6. 验证码图片保存到本地(还有显示在窗体的IMAGE控件中,这两种都说下吧~)问题补充:

  7. 叨,说了效果啊!!
  8. 有效果我还跑来问么?
  9. 我来帮他解答
  10. 输入内容已经达到长度限制还能输入 9999 字插入图片删除图片插入地图删除地图插入视频视频地图不登录也可以回答参考资料:提交回答取消
  11.       
  12. 2009-10-26 12:06 满意回答 小左,我真的郁闷哈

  13. 我不是给你说了嘛?

  14. Dim X
  15. Dim CtrlRange
  16. For Each X In Web1.Document.All
  17.        If X.tagName = "IMG" Then
  18.             Web1.Stop
  19.             Set CtrlRange = Web1.Document.body.createControlRange()
  20.             CtrlRange.Add (X)
  21.             CtrlRange.execCommand ("Copy")
  22.             Set Image1.Picture = Clipboard.GetData
  23.         End If
  24. Next

  25. Web1就是WebBrowser控件,Image1就是IMAGE控件啊?

  26. 等WebBrowser控件网页加载完毕就用上面的代码获得验证码图片了

  27. 保存本地更简单

  28. SavePicture Image1.Picture, "c:\hxheiyao.bmp"

复制代码

作者: cylhb    时间: 2012-5-19 08:48
webbrowser
是VB的一个控件..相当于TC的浏览器控件.
但是相对来说方法会多一点.
.

For Each X In Web1.Document.All

       If X.tagName = "IMG" Then

这2句的意思大概就是遍历当前网页所有元素,找到 tagName为"IMG",一般也就是图片的元素.

         Set CtrlRange = Web1.Document.body.createControlRange()

            CtrlRange.Add (X)

            CtrlRange.execCommand ("Copy")

这几句不懂,不过百度了一下,大概就是 将图片复制到剪切板...

Set Image1.Picture = Clipboard.GetData

这句很明显,把剪切板的图片显示到图片控件中...


当然,这些函数要看TC是否封装了.如果没有的话...也无法使用
作者: q405047127    时间: 2012-5-19 12:56
..................
作者: yvyan    时间: 2012-5-19 16:09
回复 10楼cylhb的帖子

TC好像没有遍历网页所有元素这个方法,看来这个问题暂时是解决不了了。谢谢指点,和你讨论问题很愉快!
作者: cylhb    时间: 2012-5-19 16:20
我也发现了TC没有遍历元素这个功能,因为确实某些网站的元素通过普通方法是无法得到的,
以前用vb都是用遍历+判断.

不过TC在执行js脚本这点比较方便,只不过对js无研究,所以深入不了.
呵呵
作者: gaozhaowen    时间: 2012-5-20 21:47
虚心学习




欢迎光临 TC官方合作论坛 (http://bbs.52tc.co/) Powered by Discuz! X3.1