怎么样取得网页上的网页登陆验证码不显示自动登陆

 上传我的文档
 下载
 收藏
多年高中历史授课经验,具有相应专业背景,善于与学生沟通,善于调动课堂气氛。
 下载此文档
正在努力加载中...
实现登录页面验证码功能的不同方式 
下载积分:628
内容提示:实现登录页面验证码功能的不同方式 
文档格式:PDF|
浏览次数:41|
上传日期: 04:06:41|
文档星级:
全文阅读已结束,如果下载本文需要使用
 628 积分
下载此文档
该用户还上传了这些文档
实现登录页面验证码功能的不同方式 
官方公共微信查看: 9478|回复: 32
如何输入网站用户名、密码、验证码,然后自动登陆系统?
阅读权限20
在线时间 小时
我想做一个飞信自动发短信的程序,我的想法是先用POST方法登陆系统(网址为:/im/login/inputpasssubmit1.action),之后再用POST方法发送短息。之前论坛里也有飞信方面的接口(见),但是这个接口已经用不了了,因为登陆的时候多了一个验证码,所以不能用原来的方法即输入用户名,密码,然后POST自动登陆,再POST发信息。我的问题是如果手动输入用户名、密码、验证码,然后再用XMLHTTP对象 POST登陆系该如何做呢?我查了很多地方都没有这方面的资料。我也尝试了很多方法比如:
Sub TT()& &‘参考了
& & Dim CookieHeaders, Cookie, i&, HTML$, CODE$, st$
& & Dim tmp() As String, p As Long, arr() As String, xmlhttp As Object, t As Single
& & Set xmlhttp = CreateObject(&WinHttp.WinHttpRequest.5.1&)
& & With xmlhttp
& && &&&.Option(6) = 0
& && &&&.Open &GET&, & /im/login/inputpass.action&, False
& && &&&.setRequestHeader &Connection&, &keep-alive&
& && &&&.SEND
& && && &Cookie = .getallResponseHeaders()
'& && && &With CreateObject(&new:{1C3BCE-B9EA-00AA006B1A69}&)& && && && && && & 'DataObject对象,数据放入剪贴板,记事本观察数据
'& && && && & .SetText Cookie
'& && && && & .PutInClipboard
'& && && &End With
& && && &CookieHeaders = Filter(Split(.getallResponseHeaders(), Chr(10)), &Set-Cookie&)& & '获取Cookie
& && && &For i = 0 To UBound(CookieHeaders)
& && && && && &CookieHeaders(i) = Split(Split(CookieHeaders(i), &: &)(1), &;&)(0)
& && && &Next
& && && &Cookie = &&
& && && &For i = 0 To i - 1
& && && && &Cookie = Cookie & CookieHeaders(i) & &;&
& && && &Next
& && && &Cookie = Left(Cookie, Len(Cookie) - 1)
& && && &HTML = .responsetext
& && && &’Debug.Print HTML
& && && &st = getPitureString(HTML)‘获取源码里的验证码图片的地址
& && && &Call DownloadImage(st, &C:\verifycode.jpeg&)’把图片下载到本地
& && && &UserForm1.Show‘显示下载到本地的验证码图片,并手动输入验证码
& && && &CODE = UserForm1.TextBox1.Text’获取验证码
& & End With
& & With xmlhttp
& && &&&.Open &POST&, &/im/login/inputpass.action&, False
& && &&&.Option(6) = 1
& && &&&.setRequestHeader &Referer&, &&
& && &&&.setRequestHeader &Cookie&, Cookie
& && &&&.setRequestHeader &Content-Type&, &application/x-www-form-urlencoded&
& && &&&.setRequestHeader &Content-Length&, Len(&m=&pass=&loginstatus=4&captchaCode=& & CODE)
& && &&&.setRequestHeader &Connection&, &Keep-Alive&
& && &&&.SEND &m=&pass=&loginstatus=4&captchaCode=& & CODE
& && &&&HTML = .responsetext
& && &&&Debug.Print HTML
& & End With
& & Set xmlhttp = Nothing
最后发现还是登陆不了,说验证码错误。我是先显示登陆页获取验证码及COOKIE,然后用该COOKIE及获取的验证码POST登陆。不知为什么不行,求高手指教?
阅读权限20
在线时间 小时
& & & & & & & &
我想做一个飞信自动发短信的程序,我的想法是先用POST方法登陆系统(网址为:/im/login/inputpasssubmit1.action),之后再用POST方法发送短息。之前论坛里也有飞信方面的接口(见),但是这个接口已经用不了了,因为登陆的时候多了一个验证码,所以不能用原来的方法即输入用户名,密码,然后POST自动登陆,再POST发信息。我的问题是如果手动输入用户名、密码、验证码,然后再用XMLHTTP对象 POST登陆系该如何做呢?我查了很多地方都没有这方面的资料。我也尝试了很多方法比如: Sub TT()& &‘参考了http://club.excelhome.net/thread--1.html
& &&&Dim CookieHeaders, Cookie, i&, HTML$, CODE$, st$
& &&&Dim tmp() As String, p As Long, arr() As String, xmlhttp As Object, t As Single
& &&&Set xmlhttp = CreateObject(&WinHttp.WinHttpRequest.5.1&)
& &&&With xmlhttp
& && && &.Option(6) = 0
& && && &.Open &GET&, & /im/login/inputpass.action&, False
& && && &.setRequestHeader &Connection&, &keep-alive&
& && && &.SEND
& && && &
& && && & Cookie = .getallResponseHeaders()
'& && && &With CreateObject(&new:{1C3BCE-B9EA-00AA006B1A69}&)& && && && && && & 'DataObject对象,数据放入剪贴板,记事本观察数据
'& && && && & .SetText Cookie
'& && && && & .PutInClipboard
'& && && &End With
& && && & CookieHeaders = Filter(Split(.getallResponseHeaders(), Chr(10)), &Set-Cookie&)& & '获取Cookie
& && && & For i = 0 To UBound(CookieHeaders)
& && && && && & CookieHeaders(i) = Split(Split(CookieHeaders(i), &: &)(1), &;&)(0)
& && && & Next
& && && & Cookie = &&
& && && & For i = 0 To i - 1
& && && && & Cookie = Cookie & CookieHeaders(i) & &;&
& && && & Next
& && && & Cookie = Left(Cookie, Len(Cookie) - 1)
& && && & HTML = .responsetext
& && && & ’Debug.Print HTML
& && && & st = getPitureString(HTML)‘获取源码里的验证码图片的地址
& && && & Call DownloadImage(st, &C:\verifycode.jpeg&)’把图片下载到本地
& && && & UserForm1.Show‘显示下载到本地的验证码图片,并手动输入验证码
& && && & CODE = UserForm1.TextBox1.Text’获取验证码
& &&&End With
& &&&With xmlhttp
& && && &.Open &POST&, &/im/login/inputpass.action&, False
& && && &.Option(6) = 1
& && && &.setRequestHeader &Referer&, &&
& && && &.setRequestHeader &Cookie&, Cookie
& && && &.setRequestHeader &Content-Type&, &application/x-www-form-urlencoded&
& && && &.setRequestHeader &Content-Length&, Len(&m=&pass=&loginstatus=4&captchaCode=& & CODE)
& && && &.setRequestHeader &Connection&, &Keep-Alive&
& && && &.SEND &m=&pass=&loginstatus=4&captchaCode=& & CODE
& && && &HTML = .responsetext
& && && &Debug.Print HTML
& &&&End With
& &&&Set xmlhttp = Nothing
End Sub复制代码最后发现还是登陆不了,说验证码错误。我是先显示登陆页获取验证码及COOKIE,然后用该COOKIE及获取的验证码POST登陆。不知为什么不行,求高手指教?
阅读权限20
在线时间 小时
看来这个问题的确太难了,自已先顶一下吧
阅读权限20
在线时间 小时
留个座位,以后慢慢学习
阅读权限50
在线时间 小时
这里,好像不用验证码:
/Account/LoginDiv
阅读权限20
在线时间 小时
蓝天630902 发表于
这里,好像不用验证码:
/Account/LoginDiv
虽然不用验证码,但是发不了信息阿
阅读权限20
在线时间 小时
验证码的获取方式不对吧
阅读权限20
在线时间 小时
& & & & & & & &
感兴趣的可以留下记号,咱们一起讨论
阅读权限20
在线时间 小时
经过无数次的试验,终于把带验证码的飞信自动登陆搞定,有INET和XMLHTTP两种方式,XP+OFFICE2003环境下测试通过。下面想看看有没有办法用OCR的方法自动识别图片,而不用手动输入。感兴趣的可以一起讨论一下。
阅读权限20
在线时间 小时
有个WEBQQ的登陆方式,目前正在学习。到时与大家分享
最新热点 /1
人人都要过六一,当当网ExcelHome部分图书4.9折封顶,莫失良机!
玩命加载中,请稍候
玩命加载中,请稍候
Powered by
本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任! & & 本站特聘法律顾问:徐怀玉律师 李志群律师抓取网页时自动登录和自动输入验证码
查看: 9977|
摘要: 集搜客GooSeeker网页抓取软件可以与在线打码平台对接,如果抓取的网站要求输入验证码,那么就把验证码转发给在线打码平台,GooSeeker将打码平台给回的结果自动录入到网页上,完成打码过程。 ... ... ... ... ... ... ...
集搜客GooSeeker网页抓取软件可以与在线打码平台对接,如果抓取的网站要求输入验证码,那么就把验证码转发给在线打码平台,GooSeeker将打码平台给回的结果自动录入到网页上,完成打码过程。集搜客GooSeeker V5.1.0版本支持如下功能
与联众打码平台对接,请用户自行在联众打码平台上开户和充值
打码只用于登录过程,如果是在抓取过程中出现验证码,。
如果需要对接其它打码平台,。
登录过程以及与打码平台对接所需的参数只能通过crontab.xml进行设置。手工启动的DS打数机无法自动登录和与打码平台对接
注释:crontab.xml文件是DS打数机用来自动周期性调度多个爬虫窗口的指令文件,详见,下文将详细讲解自动登录和打码平台对接需要配置的参数
1 自动登录和自动打码所需参数
2 参数说明
3 完整的爬虫调度
4 过程记录和误打申诉
5 信息安全确保
1,自动登录和自动打码所需参数
请注意:本版本GooSeeker并不能自动识别登录过程是否需要打码,如果使用下面的配置参数,那么就是登录过程一定需要打码。如果只需自动登录,请使用专用的登录crontab指令。
下面是crontab.xml文件中相关指令的示例(点击可下载示例):
2,参数说明
其他通用参数,请详见,下面主要讲解几个专用参数。
登录网页网址 loginpage
例如,在上,可以看到上图的界面,这个参数就是网址
登录账号 loginaccount
就是在上图需要输入的账号名字
登录密码 loginpassword
就是在上图需要输入的密码
账号输入框定位xpath accountinput
这是一个标准的xpath,可以使用MS谋数台,打开,点击浏览器中的账号输入框,就能在“网页结构”窗口中定位到这个输入框,点击“显示XPath”按钮,就能看到定位这个输入框的XPath表达式,如下
/html/body/div[position()=2]/div[position()=3]/div[position()=2]/div[position()=1]/form/div[position()=2]/div[position()=1]/input
为了能够精确定位,可以使用定位标志,即网页中的@class和@id,对于去哪儿这个网站,使用定位标志以后的xpath将是:
//div[@class='field-login']/div[contains(@class, 'username-field')]/input
可见,简短了很多,适应性也提高了很多。
密码输入框的定位XPath passwordinput
类似账号输入框定位xpath
验证码图的定位xpath captchaimg
使用类似方法,可以获得xpath表达式://div[@id='captcha']//p/img[@id='vcodeImg']
验证码输入框的定位xpath captchainput
如果是人工输入验证码的话,就在这个输入框中输入看到的字母数字,这个参数也是一个xpath
登录按钮的定位xpath submitinput
登录页面通常都会显示一个醒目的“登录”按钮,这个xpath就是定位这个按钮的。在网页不一定是一个按钮,也许是一个div,只要是用来点击的,都可以。
如果登录成功,能够看到的标志的定位xpath loginmark
通常,如果登录成功,会显示一个网页,上面会说“欢迎xxx”,这串文字就可以作为登录成功标志。
联众打码平台的登录账号 olcaptchaaccount
联众打码平台的登录密码 olcaptchapassword
请用户自行在
上开户和充值,把账号和密码配置在这两个参数中。
3,完整的爬虫调度
上面的crontab.xml只有登录一个步骤(step name="captchalogin"),通常一个网站登录以后,只要不关闭浏览器,再打开其他网页,就不用登录了。所以,在使用自动登录的时候,有两个选择
可以专门配置一个线程,专门用来登录;
也可以放在某个线程的开头,先进行登录,再抓取。
如果已经登录了,DS打数机会根据loginmark标志,直接跳过登录过程。
4,过程记录和误打申诉
找到抓取结果文件夹,通常在DataScraperWorks目录下,这个目录的上级目录可以在DS打数机的菜单上“文件”-&“存储路径”查到,抓取结果是分主题名存放的,上述示例的主题名是testcase_autologin_step,那么可以找到这个文件夹,打开以后可以看到一个子目录captcha,完整的目录结构如下图
文件夹是某个时间进行的打码对接记录,进入这个文件夹,可以看到原始验证码图和打码平台返回的结果。如果打码平台错误率很高,可以用这个记录信息与打码平台联络,要求对方改善服务质量。
5,信息安全确保
正如所说,这个配置文件存放在用户本地计算机上,而不存放在GooSeeker云服务器上,所以上述账号和密码都不会泄露出去。
若有疑问可以或
刚表态过的朋友 ()
上一篇:下一篇:

我要回帖

更多关于 网页登陆验证码不显示 的文章

 

随机推荐