`
Mybeautiful
  • 浏览: 298382 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

如何抓取需要验证码的网页?

阅读更多

    最近专门研究了下网页抓取,主要是研究对各种情况的抓取方法。今天张瑜 介绍下需要验证码的网页抓取。

   

    现在有些网页为了防止被抓取,它要求用户先填入验证码后,才能使用其服务。那我们的蜘蛛的工作就遇到了极大的障碍;因为它不能识别验证码!当然有同学说用OCR去识别,然后填入。这是个方向,但是总有些验证码是机器无法识别的。那我们怎么办?


    办法其实还是有,既然蜘蛛不能识别验证码;那我们就必须用人识别后告诉它。可行吗? 可行。众所周知,HTTP协议是无连接的协议,那么服务端判断客户端到底是否通过验证(成功输入验证码),一定是Browser传了点什么能代表自己身份的东西,比如cookie, 比如某个隐藏域的值等。既然如此,我们就可以人在网页上人工验证,然后把把与身份有关的信息找到(这个要具体情况具体分析,需要一些实验),最后把这些信息告诉蜘蛛;这样蜘蛛就可以继续冒名的去访问服务端,而服务端认为它已经通过验证,不需要再输入验证码了。


    该方法的主要思路就是回归事物的本源,不管你用什么方式实现的web服务,其根本都是http协议。具体方法论就是上面所述,实践也通过了。主要是要花时间找到能代码Browser身份的信息。注意,有些web server它对User Agent有过滤,有些User Agent明显是机器的,它们可能不会得到跟你在浏览器中返回的同样的内容;故有时候User Agent也需要设置。


    我使用java去做,会用到httpClient, 然后用Chrome去抓取http请求的信息。欢迎各位提出自己的见解。

 

----------------------------------------------------------------------

张瑜,Mybeautiful , zhangyu0182@sina.com

 

推荐阅读,

Java学习这七年     如何阅读源代码     我应该做的更差吗?

2
0
分享到:
评论
8 楼 Mybeautiful 2014-03-05  
wangshihao 写道
遇到个问题,有种网页,点击查看页面源代码和框架源代码不同效果,用frameset构成,而且真实显示的内容在页面源代码里面看不到,该怎么爬取 框架里面的代码? 等待您的回答

能找到这个frameset里面页面的url吧? 如果可以,直接访问,看返回什么东西。 如果不是返回最终的html,那就是有js动态生成的。
推荐个项目 htmlunit, 类似一个模拟的浏览器;你可以研究下。
7 楼 wangshihao 2014-03-04  
遇到个问题,有种网页,点击查看页面源代码和框架源代码不同效果,用frameset构成,而且真实显示的内容在页面源代码里面看不到,该怎么爬取 框架里面的代码? 等待您的回答
6 楼 Mybeautiful 2013-08-27  
cen_32 写道
你有实现过吗?我照你说的,但是不行

实现过,其实核心问题在于我们必须知道登陆后那些是代表登陆成功的东西.

Cookie? header? 隐藏域? 这个要具体分析,尝试。
5 楼 cen_32 2013-08-26  
你有实现过吗?我照你说的,但是不行
4 楼 Mybeautiful 2013-01-12  
huangyunbin 写道
人识别后告诉它,一个人一天能识别多少个验证码,算你10万个,这才多少,,,用人去做这个事情,真不知道你是怎么想的。

如果说只是登录时,一个机器无法识别的验证码呢?登录后可以无障碍工作。

当然也很想听听您的意见。
3 楼 huangyunbin 2013-01-10  
人识别后告诉它,一个人一天能识别多少个验证码,算你10万个,这才多少,,,用人去做这个事情,真不知道你是怎么想的。
2 楼 Mybeautiful 2012-03-21  
AndyEverLie 写道
"具体情况具体分析"。。估计大公司的爬虫是智能而不是人工吧。。

说实话还真没有研究过。理论上它们也不能知道具体的web程序到底是用什么信息去标示某个session的,不同的程序员都可以有自己的搞法;当然也有一些通用的惯例。
另外,我不认为它们的爬虫能处理验证码。 或者说一般需要验证码的东西,是不希望被别人轻易得到的(认为设置障碍),那么google,baidu它们也不必去爬它。
1 楼 AndyEverLie 2012-03-21  
"具体情况具体分析"。。估计大公司的爬虫是智能而不是人工吧。。

相关推荐

    批量抓取网站验证码

    Jsoup的设计理念是使开发者能够以人类可读的方式来处理网页内容,这使得它在网页抓取和数据提取领域非常实用。 **验证码抓取原理** 抓取网站验证码通常涉及到网络请求、HTML解析和图像处理三个步骤。首先,需要模拟...

    .net 生成验证码 代码 页面

    首先,我们需要两个关键文件:一个ASP.NET网页(通常是.aspx文件)用于显示和生成验证码,以及一个后端处理代码(如.aspx.cs或.aspx.vb文件)用于生成随机字符串和图像。这两个文件将包含以下功能: 1. **生成随机...

    用snoopy抓取EMS验证码,远程模拟查询单号,取得查询结果

    在"emscode.php"文件中,可能包含了抓取验证码图片的代码。Snoopy可以通过GET请求获取验证码图片的URL,然后将其保存到本地,以便后续处理。通常,验证码图片会被识别工具(如Tesseract OCR)处理,转换成可读的文本...

    正方教务系统数据抓取(含验证码识别)

    总结而言,"正方教务系统数据抓取(含验证码识别)"项目涉及了验证码识别、模拟登录、网页数据抓取、API接口设计等多个IT技术领域,具有较高的实用价值和学习意义。对于想要深入理解和实践网络爬虫、Web自动化以及...

    asp.net网站开发完美的验证码实例

    4. **时间限制**:设置验证码的有效时间,过期后需要用户重新获取,增加安全性。 **五、安全性考虑** 1. **防止重放攻击**:每个验证码只能使用一次,验证失败后立即失效。 2. **抵御OCR软件**:通过扭曲、倾斜、...

    python抓取淘宝天猫网页商品详情Demo

    首先,我们需要理解网页抓取的基本原理。网页抓取,也称为网络爬虫,是通过模拟浏览器行为,自动请求网页并解析其中的数据的过程。Python提供了多个库来支持这项工作,如BeautifulSoup、Requests和Scrapy等。在这个...

    网页验证码控件

    网页验证码控件是一种用于网络安全的重要工具,主要目的是防止自动化程序(如机器人)对网页服务进行非授权访问或滥用。在互联网应用中,特别是在用户注册、登录、上传文件等关键操作时,验证码通常作为一道防线,...

    易语言——取网页验证码图片模块

    1. **加载网页**:首先,需要使用易语言的网络模块来加载包含验证码图片的网页,这通常涉及到HTTP或HTTPS请求。 2. **定位验证码图片**:在网页源代码中找到验证码图片的URL或者HTML元素,定位到图片资源。 3. **...

    网页抓取小工具

    网页抓取小工具,顾名思义,是一种用于获取网页数据的实用软件,它使得学习网站制作的初学者能够轻松地研究和分析其他网站的设计、布局以及所使用的资源。在这个数字化时代,理解并掌握如何有效地从互联网上获取信息...

    网页抓取教程.zip

    网页抓取,也被称为网络爬虫或数据抓取,是一种自动化技术,用于从互联网上收集大量信息。在Java EE和Android开发中,网页抓取是一个重要技能,可以帮助开发者获取网站上的结构化数据,如新闻、产品信息、评论等,...

    java网页抓取数据

    在网页抓取过程中,经常需要处理JavaScript渲染的内容,因为很多网站使用AJAX技术动态加载数据。这时,HtmlUnit这样的无头浏览器库就派上用场了,它可以执行JavaScript并呈现动态内容: ```java HtmlUnitClient ...

    针对 httpclient4.* 绕验证码获取公司信息 包括 jsoup网页信息的爬虫及htmlUnit对动态网站信息的抓取

    本主题主要关注如何使用`httpclient4.*`库来绕过验证码获取公司信息,以及结合`jsoup`解析静态网页信息和`htmlUnit`处理动态网站的抓取。以下是对这些知识点的详细说明: 1. **httpclient4.***: Apache HttpClient...

    网页文字抓取器

    网页文字抓取器是一种工具,主要用于从互联网上的网页中批量提取文字内容。这种工具在数据挖掘、信息分析、搜索引擎优化(SEO)等领域有着广泛的应用。它能够自动化地爬取网页,解析HTML,提取出纯文本,帮助用户...

    delphi抓取网页数据

    Web抓取,也称为网页抓取或网络爬虫,是一种自动化地从互联网上获取大量信息的技术。在Delphi中,我们可以使用 Indy 库或者 Wininet 库来实现HTTP请求,这两个库提供了丰富的API接口用于发送GET或POST请求,从而获取...

    蜘蛛抓取网页数据

    此外,如果网页内容是动态加载的,例如通过Ajax技术,我们可能需要使用Selenium这样的工具,它可以模拟真实用户的交互行为,包括点击按钮、滚动页面等,以便抓取到完整的信息。 标签中的“.NET抓取”意味着我们可以...

    vb获取网页中的图片验证码

    在IT行业中,尤其是在自动化测试、数据抓取或者网络编程领域,有时我们需要从网页上获取图片,特别是验证码图片。本文将详细讲解如何使用VB(Visual Basic)来实现这一目标,保存验证码图片到本地。 首先,我们需要...

    网页数据比分抓取源码

    此外,随着网站动态加载和反爬虫技术的发展,抓取过程中可能需要处理JavaScript执行、登录验证、验证码识别等问题。 在实际应用中,数据抓取可以结合数据清洗、数据分析等环节,形成完整的数据处理流程,用于竞彩...

    网页抓取例子

    - 网页抓取需要遵守网站的Robots协议,尊重网站的抓取规则。 2. **使用JSP进行网页抓取**: - 在JSP中,你可以使用Java代码来实现HTTP请求,如使用`java.net.URL`和`java.io.BufferedReader`,或者使用第三方库如...

    影刀RPA系列公开课3:网页自动化——数据抓取.rar

    5. **网页登录与表单填充**:模拟用户登录过程,自动填写表单,这对于需要登录才能访问的网页数据抓取尤其重要。 6. **异常处理**:了解如何处理网络延迟、验证码、动态变化的网页结构等问题,确保自动化流程的稳定...

    网络爬虫-如何获取网页中动态加载的验证码图片-Python实例源码.zip

    通过控制浏览器加载页面,我们可以等待动态内容加载完成后再抓取验证码图片。 2. **分析网络请求**:使用如Fiddler、Charles或Python的`requests`库,监控浏览器与服务器之间的HTTP通信。动态加载的内容往往伴随着...

Global site tag (gtag.js) - Google Analytics