Vb.net 如果src使用java函数,如何获取验证码图像?
我怎样才能从计算机中获取验证码 卡普查图像 我尝试了MSHTML,但该网站使用java脚本函数在其src中显示检索验证码。请试着回答我如何才能做到这一点Vb.net 如果src使用java函数,如何获取验证码图像?,vb.net,captcha,Vb.net,Captcha,我怎样才能从计算机中获取验证码 卡普查图像 我尝试了MSHTML,但该网站使用java脚本函数在其src中显示检索验证码。请试着回答我如何才能做到这一点 Imports MahApps.Metro.Controls Imports System.Net Imports System.Windows.Forms Class MainWindow Inherits MetroWindow Private Sub MetroWindow_Loaded(sender As Obje
Imports MahApps.Metro.Controls
Imports System.Net
Imports System.Windows.Forms
Class MainWindow
Inherits MetroWindow
Private Sub MetroWindow_Loaded(sender As Object, e As RoutedEventArgs)
wb.Navigate("https://www.irctc.co.in/eticketing/loginHome.jsf")
AddHandler wb.LoadCompleted, AddressOf wb_Loaded
End Sub
Private Sub btngo_Click(sender As Object, e As RoutedEventArgs) Handles btngo.Click
Dim htmldoc As MSHTML.IHTMLDocument2 = wb.Document
Dim usrtxtdoc As MSHTML.IHTMLElement = htmldoc.all.item("j_username", 0)
Dim usrpwddoc As MSHTML.IHTMLElement = htmldoc.all.item("j_password", 0)
Dim captchadoc As MSHTML.IHTMLElement = htmldoc.all.item("j_captcha", 0)
usrtxtdoc.innerText = txtusrname.Text
usrpwddoc.innerText = txtpwd.Text
captchadoc.innerText = txtcaptcha.Text
End Sub
Private Sub wb_Loaded(sender As Object, e As System.Windows.Navigation.NavigationEventArgs)
MsgBox("Loaded")
Dim htmldoc As MSHTML.IHTMLDocument2 = wb.Document
Dim htmldoc2 As MSHTML.HTMLDocument = wb.Document
Dim captchaimg As MSHTML.HTMLImg = htmldoc.all.item("cimage", 0)
Dim bitmap As New BitmapImage
bitmap.BeginInit()
bitmap.UriSource = New Uri(wb.FindResource("captchaImage"))
bitmap.EndInit()
imgcaptcha.Source = bitmap
End Sub
Private Sub wb_Navigated(sender As Object, e As NavigationEventArgs) Handles wb.Navigated
lblwbstatus.Content = "Load Completed"
End Sub
Private Sub wb_Navigating(sender As Object, e As NavigatingCancelEventArgs) Handles wb.Navigating
lblwbstatus.Content = "Navigating Please wait"
End Sub
Private Sub lblwbstatus_MouseDoubleClick(sender As Object, e As MouseButtonEventArgs) Handles lblwbstatus.MouseDoubleClick
wb.Refresh()
End Sub
End Class
您可以从下载源代码,通常您会这样做:
Dim htmldoc As mshtml.IHTMLDocument2 = wb.Document.DomDocument
Dim captchaimg As mshtml.HTMLImg = htmldoc.all.item("cimage", 0)
Dim imgRange As IHTMLControlRange = htmldoc.body.createControlRange()
For Each img As IHTMLImgElement In htmldoc.images
If img.nameProp = "captchaImage" Then
imgRange.add(img)
imgRange.execCommand("Copy", False, Nothing)
Using bmp As Bitmap = Clipboard.GetDataObject().GetData(DataFormats.Bitmap)
bmp.Save("c:\test.bmp")
End Using
End If
Next
但是,由于internet explorer的问题,图像有一个alpha通道无法复制到剪贴板(如您在此处看到的)
其他方法是检查internet explorer缓存,但由于HTTP头的原因,该图像不会被缓存,因此您运气不佳。考虑到以下因素,上面的代码工作得非常好: 1-项目类型-如网页目标示例(“IMG”)中所示。 2-图像专有名称示例:CaptchaImg.jpg将被写成CaptchaImg.jpg 3-添加对(mshtml)的引用并将mshtml导入到项目中 4-右键单击项目上的引用-->单击添加引用--> -->浏览按钮单击-选择或导航到---> C:\Windows\assembly\GAC\Microsoft.mshtml\7.0.3300.0\uuu b03f5f7f11d50a3a\Microsoft.mshtml.dll ---->单击“确定”按钮---这会将Microsoft.mshtml.dll添加到您的引用中 最后以导入方式导入到项目中(导入mshtml)。 5-将目录bmp.Save(“c:\test.bmp”)-->更改为例如bmp.Save(“c:\test\test.bmp”)
为安全和管理权而享有特权 我是新来的stackoverflow所以请不要贬低我的问题我感谢你编辑了我的问题购买请不要贬低我真的需要解决方案没有jhonkiller,我的意思是,当这个验证码加载到webbrowser控件中时,它调用java函数来获取图像,但当您再次使用SRC调用这个验证码函数时,正如您在评论中所说的,它单独调用验证码java函数并生成新的验证码图像。我需要一种方法来检索加载在DOM文档中的CAPTCHA图像,这是因为CAPTCHA存储在会话变量中。当您请求图像URL时,会话将被刷新。让我想想有没有办法。你的最终目标是什么?谢谢你,兄弟。我会试试这个,然后回答你的问题。还有其他的图书馆可以这样做吗?就像其他的HTML敏捷包一样?你的最终目标是什么?提供登录功能?是的,我想提供登录和订票功能,但不显示webbrowser控件。我想问你一些问题。有没有办法获得webbrowser控件的屏幕截图,这样我就可以捕获captch的屏幕截图?谢谢你的帮助