zoukankan      html  css  js  c++  java
  • 黑板客爬虫闯关笔记(4-5关)

    第四关在第三关的基础上多了以下两点:

      1、网页响应时间增加。(要想快速找到密码就需要多线程)

      2、强密码,100位的密码按位置随机出现,需要抓取网页不同位置密码,再组合起来。

        解题过程:

            第一次(失败):    我发现password列表共13页,所以我以为只要将列表中不重复的位置的值加到一个list中。再将list转换为一个int的密码,就是登录密码。在尝试多次,返回登录失败后,我发现13页的密码长度不超过70位,应该是哪里出错了。这时,我没想到密码会是100位的。。。

            第二次(成功):    在讨论区看到有人成功了,于是去学习经验,看到密码长度是100位,就想到怎么过关了。只要将第一次闯关的代码改动一下,加入密码长度判断,到达100位时就尝试登录。

        闯关成功(630秒)::

        

      第四关代码:http://www.cnblogs.com/hxs2660/p/5559611.html

      第五关:识别验证码


         

    解题过程:

               1、    在这一关中,所需要的登录信息如下(用firebug抓取到的):

                            1:username,2:csrfmiddlewaretoken,    3:password,    4:captcha_0,     5:captcha_1

                1.1    1、2两项我们都知道。password:老师并没给出密码提示,只能按照第2、3关密码0~30尝试。captcha_0:是登录页面上一个隐藏的值(可以获取到),对应的应该是验证码在服务器的值。captcha_1:验证码。

                1.2    验证码识别是参考python网络数据采集这本书中11.3节:读取验证码与训练Tesseract。经测试,Tesseract识别率在16%左右(因为我没有训练样本),我们可以通过对识别出的验证码加以验证就知道是否可以用来登录,因为验证码是有规律的:长度为4,全是大写字母,这样登录的话有50%几率验证码正确。

                        --Tesseract:Tesseract是一个OCR库,参考:https://github.com/tesseract-ocr/tesseract/wiki

                1.3     以下是程序流程图:                

                 

            2        闯关成功(用时:640秒...):

              

    第5关代码有点长就不复制过来了,有兴趣可以看下https://github.com/hxs2660/hbk_crawler/blob/master/ex05.py

  • 相关阅读:
    ORA-65114
    Mariadb 10.14 mysqldump error: 1049
    nginx:403 forbidden
    ORA-01017
    oracle 12C 之 Clone 数据库
    Selinux的基本使用
    This system is not registered to Red Hat Subscription Management
    Emacs: too long for unix domain socket
    hive 之 元数据表结构(Mysql)
    hive之SerDe
  • 原文地址:https://www.cnblogs.com/hxs2660/p/5560296.html
Copyright © 2011-2022 走看看