其实我想获取当我准备要登录百度注册的时候,获得验证码图片,
本来想用HttpURLConnection.openConnection这个方法,获取那个验证码的,
但是在百度注册的时候,那个验证码,每次刷新网页,那串验证码图片的网址都不一样的。。
所以说HttpURLConnection.openConnection这个方法是失效的(或者说自己不会用)。。
https://passport.baidu.com/v2/?reg&fr=old&tpl=al&u=http://open.baidu.com/?reg=pass
现在的话,我只能在它加载完网页之后,才能正确读取当前真正的验证码,
那我有什么办法,在它不加载完网页之前,就获取我准备将要要登录百度注册网站的验证码图片?
其实不是很懂它,验证码的生成原理,就我猜的有两种,
1.在它完全加载完那个网站之后 -> 验证码图片才会触发-> 正确生成 -> 显示出来。
2.先发一个信号给那个网站,-> 生成验证码 -> 加载整个网站之后 -> 把生成的验证码显示出来。
不知道还会不会有其它方法,如果是发信号的话,那我应该有什么 技巧或者 方法,可以
或者这个信号。
说得有点乱,不过应该能看得懂吧?
加载验证码图片时会设置一个cookie,后台验证时根据这个cookie判断。只需要获取一次,保存后识别,然后提交上去。别忘了用cookiejar######
那我应该要如何才能获取这个验证码的图片?
是不是这样?
HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setRequestMethod("GET"); String cookie = conn.getHeaderField("set-cookie");//对应你上面说的:加载验证码图片时会设置一个cookie System.out.println("cookie : " + cookie);
但是打印出来的是:
cookie : PASSID=gvXk8V; expires=Thu, 20-Jun-2013 00:42:08 GMT; path=/; domain=passport.baidu.com; httponly
我是用百度注册测试的:https://passport.baidu.com/v2/?reg&fr=old&tpl=al&u=http://open.baidu.com/?reg=pass
还有那个cookiejar是什么用的?
我百度了一下,发觉它是python的东西,和java有什么关系?
######没注意你用的什么语言,但是原理是一样的,你f12看下会发现有设置cookie~cookiejar是python的,一个cookie自动管理的东西吧,java里找不到差不多的东西直接手动提取到然后设置算了。######我来说说,之前做过这个。
不管你前台你用什么展示,但是后台肯定 是这个逻辑。
先用 HttpURLConnection 得到图片流,注意:将这个对象中的cookie取出来。取出对应的domain,value,过期时间。保存在数据库或是文件当中。当你前台显示图片,并且输入验证友后,你再把之前那个cookie序列成对象,和你的表单一起提交。。
懂了吗?
######你已经离成功不远了。自己做试验。######获取验证码和对应的cookie,将验证码图片拿去处理识别,识别完后与cookie一起提交进行验证码自动识别。######不管你前台你用什么展示,但是后台肯定 是这个逻辑。
先用 HttpURLConnection 得到图片流,注意:将这个对象中的cookie取出来。取出对应的domain,value,过期时间。保存在数据库或是文件当中。当你前台显示图片,并且输入验证友后,你再把之前那个cookie序列成对象,和你的表单一起提交。。
懂了吗?
您好,期待你再次关注这个问题。
我现在核心的就是:
1.不是很懂如何利用HttpURLConnection来获取那个验证码的图片流。
2.验证码的流程也不是很懂,他怎么样才会肯发那个验证码给我?
还有我返回数据的时候,把之前保存的对应的domain,value,过期时间取出来加上验证码,一起返回才行?还需要其它数据吗??
期待你的回复。。
######您好,现在我主要碰到的问题是,不知道怎么获取验证码?
不懂在没加载完那个网页之前获取验证码。。
期待你的回复。。
######不管你前台你用什么展示,但是后台肯定 是这个逻辑。
先用 HttpURLConnection 得到图片流,注意:将这个对象中的cookie取出来。取出对应的domain,value,过期时间。保存在数据库或是文件当中。当你前台显示图片,并且输入验证友后,你再把之前那个cookie序列成对象,和你的表单一起提交。。
懂了吗?
您好,再次打扰一下你,刚刚测试一番,我是用百度网站注册来测试的。https://passport.baidu.com/v2/?reg
发觉得到那个验证码的步骤需要两个步骤:
1.首先要在这个地址
找到:
bd__cbs__r6os13({"errInfo":{ "no": "0" }, "data": { "rememberedUserName" : "kaluosi0", "codeString" : "captchaservice3235626146356e6b35355a692b49337457354d6831414d5741356a4d5a5a4566663670724f437336694a7267374844597a61664635596c2b70636a6e4c43626a4c304634584d354c786a726f31667637756662524f636a6e5474484f4b4d376c7053666946712f4a706a502f6e47714a506f436d725531714c795746364d4b32583375372f3067756572744d742b55675076383076657261754f3835757865556a584c7558347a7542664c66394e306d5933305572744a6f764b5a4354794570464164397a795a7939426b4d44754145766c35726c33737749697838696b63383341716834523543466771354a5949415a6f6c6576767a6a487a67354a67466d31744b54504274496c4d4e316e364d393655766332716277566c6539724b6132424a47672b413469", "token" : "5e4987883b49beac2105b39cd2395c10", "cookie" : "1", "usernametype":"1", "spLogin" : "rate", "disable":"", "loginrecord":{ 'email':[ ], 'phone':[ ] } }})
截那个 captchaservice....95c10这段代码。
2.把它并到
这里去,即
上面那个就是验证码图片的地址,不过每次刷新验证码的地址都不一样,即
每次刷新都不一样。
但是问题是,在我获得这个验证码的图片之前还有之后我该怎么做?
是不是要请求某些网址,等待返回些信息,然后保存这样的?
流程是怎么样的?
就拿https://passport.baidu.com/v2/?reg这个网址来说。
大神,我扣扣980914629,你看到之后,希望你能加加我,我很想学好这个技术,谢谢,不会打扰你太长时间的,麻烦了。。
######不管你前台你用什么展示,但是后台肯定 是这个逻辑。
先用 HttpURLConnection 得到图片流,注意:将这个对象中的cookie取出来。取出对应的domain,value,过期时间。保存在数据库或是文件当中。当你前台显示图片,并且输入验证友后,你再把之前那个cookie序列成对象,和你的表单一起提交。。
懂了吗?
您好,再次打扰一下你,刚刚测试一番,我是用百度网站注册来测试的。https://passport.baidu.com/v2/?reg
发觉得到那个验证码的步骤需要两个步骤:
1.首先要在这个地址
找到:
bd__cbs__r6os13({"errInfo":{ "no": "0" }, "data": { "rememberedUserName" : "kaluosi0", "codeString" : "captchaservice3235626146356e6b35355a692b49337457354d6831414d5741356a4d5a5a4566663670724f437336694a7267374844597a61664635596c2b70636a6e4c43626a4c304634584d354c786a726f31667637756662524f636a6e5474484f4b4d376c7053666946712f4a706a502f6e47714a506f436d725531714c795746364d4b32583375372f3067756572744d742b55675076383076657261754f3835757865556a584c7558347a7542664c66394e306d5933305572744a6f764b5a4354794570464164397a795a7939426b4d44754145766c35726c33737749697838696b63383341716834523543466771354a5949415a6f6c6576767a6a487a67354a67466d31744b54504274496c4d4e316e364d393655766332716277566c6539724b6132424a47672b413469", "token" : "5e4987883b49beac2105b39cd2395c10", "cookie" : "1", "usernametype":"1", "spLogin" : "rate", "disable":"", "loginrecord":{ 'email':[ ], 'phone':[ ] } }})
截那个 captchaservice....95c10这段代码。
2.把它并到
这里去,即
上面那个就是验证码图片的地址,不过每次刷新验证码的地址都不一样,即
每次刷新都不一样。
但是问题是,在我获得这个验证码的图片之前还有之后我该怎么做?
是不是要请求某些网址,等待返回些信息,然后保存这样的?
流程是怎么样的?
就拿https://passport.baidu.com/v2/?reg这个网址来说。
大神,我扣扣980914629,你看到之后,希望你能加加我,我很想学好这个技术,谢谢,不会打扰你太长时间的,麻烦了。。
我最后的成果是这样:
链接: http://pan.baidu.com/s/1i5yrpml 密码: 68mg
这是android上的java代码,大家可以参考下
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。