获取没有任何ID的网页验证码,并且复制到图片框中,并且保存到图
vb.net吧
全部回复
仅看楼主
level 1
大家都知道,网页验证码是不能下载的,因为你下载了,验证码完全是不同的
所以,我们利用代码,把这个验证码保存下来,然后就好办了,自己写算法啊,接打码平台啊,都好办了
但是遇到没有ID的验证码,我们是不是束手无策了呢?
来看看楼主的解决方法,一楼直接上代码
2016年06月22日 06点06分 1
level 1
第一步,谷歌浏览器检查源代码,我们发现,这个网页元素什么属性都没有,没关系,我们可以用源代码定位法轻松搞定
第一步,申明一个变量,用来保存这个的索引,你也可以在FOR循环里搞定保存图片的事,就是看上去有点乱而已
Dim hao
第二步,遍历网页全部
For i As Integer = 0 To WebBrowser1.Document.All.Count - 1
'获得当前网页对象的源代码
Dim a = WebBrowser1.Document.All(i).OuterHtml
'如果源代码存在border字符,并且长度小于200,就是
正确的

If InStr(a, "border") <> 0 And Len(a) < 200 Then
'调试输出
Debug.Print(WebBrowser1.Document.All(i).OuterHtml)
'序列号赋值
hao = i
’这里可以exit for
End If
Next
然后关键的核心代码来了
'随便定义一个变量
Dim CtrlRange As Object
’挂钩网页
CtrlRange = WebBrowser1.Document.Body.DomElement.createControlRange()
‘注意这个hao变量,如果你不知道是什么,看上面
CtrlRange.Add(WebBrowser1.Document.DomDocument.All(hao))
’复制到剪切板
CtrlRange.execCommand("Copy")
‘从剪切板读取数据,如果剪切板是图片类型
If Clipboard.ContainsData(DataFormats.Bitmap) Then
’图片框显示文件
PictureBox1.Image = Clipboard.GetData(DataFormats.Bitmap)
‘图片框的文本保存。。。
PictureBox1.Image.Save("C:\1.jpg", System.Drawing.Imaging.ImageFormat.Jpeg)
End If
2016年06月22日 06点06分 2
level 1
For i As Integer = 0 To WebBrowser1.Document.All.Count - 1
Dim a = WebBrowser1.Document.All(i).OuterHtml
If InStr(a, "border") <> 0 And Len(a) < 200 Then
Dim CtrlRange = WebBrowser1.Document.Body.DomElement.createControlRange()
CtrlRange.Add(WebBrowser1.Document.DomDocument.All(i))
CtrlRange.execCommand("Copy")
If Clipboard.ContainsData(DataFormats.Bitmap) Then
PictureBox1.Image = Clipboard.GetData(DataFormats.Bitmap)
PictureBox1.Image.Save("C:\1.jpg", System.Drawing.Imaging.ImageFormat.Jpeg)
End If
End If
Next
2016年06月22日 06点06分 5
level 11
谁说不能下载验证码哦,关键点在cookie,带着得到的cookie去获取验证码,想怎么下载都可以
2016年06月26日 20点06分 6
cookie是字符串类型,好像没包含图片的
2016年06月27日 01点06分
@闪星2 是啊,是不怎么懂,我只知道保存登录cookie,但是cookie这么解析不知道
2016年06月27日 16点06分
回复
永远的艺术大师
:cookiecontainer,有用过吗
2016年06月27日 16点06分
@闪星2 谢谢提示,我去看看
2016年06月28日 02点06分
1