《封号码罗》python爬虫之文字点选型验证码破解一次仅需2分5厘人民币(十)

AI破解验证码?看如何实现文字点选验证码的破解 文字点选、选字、选择文字验证码识别。 阅读详情

在这里插入图片描述
不管图片上是两个字,三个字,还是四个字,统统2分5厘
环境的配置自行百度解决
在实际开发环境中,这类验证码反爬通常都是比较难处理的,你要是说自己搞一个CNN卷积神经网络,那我只能说:大佬,带我飞。
对于普通码农来说,能借助第三方平台起飞,也是不错的选择,毕竟公司要的是爬下来的数据,不是你用了什么方法在那儿破解登陆验证什么的,总之还是看效率的吧,个人理解,不喜勿喷!
知识付费的时代,所以本文要求VIP用户才可以看,全程注释,小白也能秒懂

# 点选文字验证码

import time
from io import BytesIO
from PIL import Image
from selenium import webdriver
from selenium.webdriver import ActionChains
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from chaojiying import Chaojiying

USERNAME = "admin"
PASSWORD = "admin"
CHAOJIYING_USERNAME = "超级鹰用户名"
CHAOJIYING_PASSWORD = "超级鹰密码"
CHAOJIYING_SOFT_ID = 9****6
CHAOJIYING_KIND = 9004

if not CHAOJIYING_USERNAME or not CHAOJIYING_PASSWORD:
    print("请设置用户名和密码")
    exit(0)


class CrackCaptcha():
    captcha_result_json = ""

    def __init__(self):
        self.url = "https://captcha3.scrape.center/"
        self.browser = webdriver.Chrome()
        self.wait = WebDriverWait(self.browser, 20)
        self.username = USERNAME
        self.password = PASSWORD
        self.chaojiying = Chaojiying(CHAOJIYING_USERNAME, CHAOJIYING_PASSWORD, CHAOJIYING_KIND)

    # 第一步 打开网页输入用户名和密码
    def open(self):
        self.browser.get(self.url)
        username = self.wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, "input[type='text']")))
        password = self.wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, "input[type='password']")))
        username.send_keys(self.username)
        password.send_keys(self.password)
        return print("已输入用户名和密码")

    # 第二步 获取登录按钮,点击该按钮之后会弹出验证码图
    def get_captcha_button(self):
        time.sleep(2)
        button = self.wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, "button[type='button']")))
        return button

    # 第三步 获取验证码图片的位置和大小,从网页截图里截取相应的验证码图片即可获取到
    def get_captcha_element(self):
        time.sleep(2)
        # 验证码图片加载出来
        print("准备获取验证码节点")
        self.wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, "img.geetest_item_img")))
        # 验证码完整节点
        element = self.wait.until(EC.presence_of_element_located((By.CLASS_NAME, "geetest_panel_box")))
        print("成功获取验证码节点")
        return element  # 返回验证码图片的完整节点对象

    # 第四步 通过图片对象获取验证码位置,返回位置元组数据
    def get_captcha_position(self):
        element = self.get_captcha_element()  # 调用第三步返回的完整图片对象节点
        time.sleep(2)
        # location属性可以返回该图片对象(既这张图片)在浏览器中的位置,以字典的形式返回,{‘x’:30,‘y’:30}
        # 坐标轴是以屏幕左上角为原点,x轴向右递增,y轴像下递增
        location = element.location
        print("返回图片对象在浏览器中的相对位置location", location)  # {'x': 304, 'y': 288}
        # size属性是图片对象的高度,宽度{‘height’:30,‘width’:30}
        size = element.size
        print("返回图片对象的宽度和高度size", size)  # {'height': 311, 'width': 320}
        top, bottom, left, right = location["y"], location["y"] + size["height"], location["x"], location["x"] + size[
            "width"]
        return (top, bottom, left, right)

    # 第五步 获取网页截图
    def get_screenshot(self):
        screenshot = self.browser.get_screenshot_as_png()
        screenshot = Image.open(BytesIO(screenshot))
        screenshot.save("screenshot.png")
        print("获取到整个网页的截图对象")
        return screenshot

    # 第六步 获取验证码图片(从网页截图中获取)
    def get_captcha_image(self, name="captcha.png"):
        top, bottom, left, right = self.get_captcha_position()
        print("验证码位置", top, bottom, left, right)
        screenshot = self.get_screenshot()
        #                           238   650     304   626
        # captcha = screenshot.crop((top, bottom, left, right))  # 顺序错误,就不会切图成功,有报错提示
        captcha = screenshot.crop((left, top, right, bottom))
        captcha.save(name)
        print("将验证码从这个网页中截取出来的图片对象")
        return captcha

    # 第七步 把图片发送给打码平台
    def get_chaojiying_json(self):
        image = self.get_captcha_image()
        bytes_array = BytesIO()
        image.save(bytes_array, format="PNG")
        # 识别验证码
        captcha_result = self.chaojiying.post_pic(bytes_array.getvalue(), CHAOJIYING_KIND)
        # captcha_result = {'err_no': 0, 'err_str': 'OK', 'pic_id': '9134714115830400002', 'pic_str': '12,14|2,6',
        #                   'md5': '64137ffa420c328888c3cc53ca82bf8e'}
        self.captcha_result_json = captcha_result
        print("超级鹰返回json", captcha_result)
        return captcha_result

    # 第八步 解析超级鹰返回的数据
    def get_points(self, captcha_result):
        groups = captcha_result.get("pic_str").split("|")
        locations = [[int(number) for number in group.split(",")] for group in groups]
        return locations  # [[12, 14], [2, 6]]

    # 单独退还题分的操作
    def get_report_error(self):
        im_id = self.captcha_result_json.get("pic_id")
        result = self.chaojiying.report_error(im_id)
        return print("已请求退还题分", result)

    # 第九步 点击验证码图片进行验证
    def touch_click_words(self, locations):
        print("-----------------准备点击图片上面的验证码")
        for location in locations:
            try:
                ActionChains(self.browser).move_to_element_with_offset(self.get_captcha_element(), location[0],
                                                                       location[1]).click().perform()
            except Exception as e:
                self.get_report_error()
                raise {"error_message": "点选坐标返回错误,已执行退分程序"}
            time.sleep(5)
        print("图片点击验证操作完成,准备点击确认按钮")
        commint = self.wait.until(EC.presence_of_element_located((By.CLASS_NAME, "geetest_commit_tip")))
        commint.click()
        return print("已点击确认按钮")

    # 第十步 判定是否成功
    def get_success(self):
        try:
            time.sleep(2)
            self.wait.until(EC.text_to_be_present_in_element((By.TAG_NAME, "h2"), "登陆成功"))
            return print("登陆成功")
        except Exception as e:
            print("登陆失败,调用接口返回题分", e)
            self.get_report_error()


if __name__ == '__main__':
    cc = CrackCaptcha()
    cc.open()
    botton = cc.get_captcha_button()
    botton.click()
    captcha_result = cc.get_chaojiying_json()
    locations = cc.get_points(captcha_result)
    cc.touch_click_words(locations)
    cc.get_success()

# 学习登陆的链接 https://captcha3.scrape.center/

超级鹰的SDK,不需要修改,两个文件放在放同一个文件夹下面就ok

import requests

from hashlib import md5


class Chaojiying(object):

    def __init__(self, username, password, soft_id):
        self.username = username
        self.password = md5(password.encode('utf-8')).hexdigest()
        self.soft_id = soft_id
        self.base_params = {
            'user': self.username,
            'pass2': self.password,
            'softid': self.soft_id,
        }
        self.headers = {
            'Connection': 'Keep-Alive',
            'User-Agent': 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0)',
        }

    def post_pic(self, im, codetype):
        """
        im: 图片字节
        codetype: 题目类型 参考 http://www.chaojiying.com/price.html
        """
        params = {
            'codetype': codetype,
        }

        params.update(self.base_params)
        files = {'userfile': ('ccc.jpg', im)}
        r = requests.post('http://upload.chaojiying.net/Upload/Processing.php', data=params, files=files,
                          headers=self.headers)
        return r.json()

    def report_error(self, im_id):
        """
        im_id:报错题目的图片ID
        """
        params = {
            'id': im_id,
        }
        params.update(self.base_params)
        r = requests.post('http://upload.chaojiying.net/Upload/ReportError.php', data=params, headers=self.headers)
        return r.json()

图标点选与空间推理:深入探索极验验证码技术及其破解策略 验证码,作为网络安全的第一道防线,一直是技术界的热门话题。近年来,极验图标点选验证码凭借其独特的设计和高度的安全性,成为了众多网站的首选验证方式。本文将从专业的角度深入探讨这种验证码的工作原理,并以suocr.com为例,展示如何破解这种验证码。 阅读详情

相关推荐

点选验证码思路:图像识别 + 坐标定位破解点选验证

摘要:本文系统分析点选验证码的破解技术,提出"图像识别+坐标定位+模拟点击"的破解框架。首先阐述点选验证码的原理与分类(文字/物体/场景点选),详细说明基于YOLO模型的目标检测、坐标映射及Selenium模拟点击等核心技术实现,并提供完整代码示例。文章强调技术应用的合规性,仅限授权测试场景使用,同时探讨了数据增强、多模型融合等优化策略及动态目标生成等挑战。研究成果为合法自动化测试提供技术参考,助力网络安全防护能力提升。

2503_91057718的博客 493

如何自动化解决或破解文字、图像、滑块、点选等验证码问题

​ 在互联网上,验证码(CAPTCHA)是常见的一种现象。它们是网站用来判断你是人还是机器人的令人厌烦的测试。虽然它们在防止垃圾邮件和滥用方面有着重要的作用,但它们有时也会给人们带来困扰,尤其是当它们很难解决或者需要解决大量的验证码时。这就是CapSolver的用武之地。CapSolver是一个利用人工智能和机器学习来解决验证码问题的服务,使你的生活变得更加轻松。在本博客文章中,我们将指导你如何使用CapSolver来解决任何验证码问题。

weixin_68994939的博客 1703

Python 爬虫反爬突破:点选验证码逆向破解方案

点选验证码是继滑块验证码之后互联网主流的高强度人机校验形态,常见形式包含文字点选、图标顺序点选、汉字语序点选、语义关联点选等。相比滑块验证码仅需匹配位置与轨迹,点选验证码同时融合图像识别、文字语义、点击顺序、行为轨迹、坐标间隔、点击时延多重风控,普通自动化脚本极易触发校验失败与 IP 限制。此类验证码广泛应用于账号注册、登录防护、接口风控、高频查询等高敏感场景,传统打码平台存在成本高、响应慢、接口不稳定、批量采集受限等问题。

2503_91057718的博客 1579

文字点选验证码的破解方法~

点击上方“Python爬虫与数据挖掘”,进行关注回复“书籍”即可获赠Python从入门到进阶共10本电子书今日鸡汤荷笠带斜阳,青山独归远。作者简介:张老师,学习计算机十余年,在信息安全、生...

pdcfighting的博客 5809

MIKE 21 教程 1.5 基于卫星影像绘制河道边界

上一节讲解了如何输入高程数据与绘制网格本节讲解如何根据卫星影像绘制河道边界。在实际项目中,经常遇到河道图纸缺少的情况,此时可以根据卫星影像进行勾勒绘制。常用的地理信息软件均可完成此功能,这里使用大家较为熟悉的ArcGis进行教学(本文默认大家有基础ArcGis操作知识,如有不懂可留言)。

Hello Word 3282

论文复现《基于最大李雅普诺夫指数的电力系统暂态电压稳定评估方案》

电力系统暂态电压稳定评估方案 摘要 本研究提出了一种基于最大李雅普诺夫指数的电力系统暂态电压稳定评估方法。通过分析相空间中相邻轨迹的收敛或发散特性,该方法能够提前判别系统稳定性。论文首先阐述了暂态电压稳定机理,详细介绍了最大李雅普诺夫指数的计算方法。针对IEEE-39节点系统,建立了仿真模型并获取不同故障场景下的数据。研究开发了完整的评估程序,包括数据预处理、相空间重构、指数计算等模块,并通过与时域仿真结果的对比验证了方法的准确性。实验结果表明,该方法能够快速有效地评估电力系统的暂态电压稳定性,为系统安全运

max500600的博客 186

图标点选验证码识别---python破解代码

在线测试:http://121.4.108.95:8000/index/ 开源地址:https://github.com/Bump-mann/simple_ocr首先我们看一个较简单的图标点选验证码 从上面图片中依次点击以下图形 笔者的思路(其实就是对着别人的抄)是先识别出图形切割下来,然后分别对比相似度,就可以得出需要点击位置啦~模型下载链接放在文章末尾!显而易见,识别分为两部分,以下为目标识别代码 效果如下: 有些龟裂是因为我加了一些自以为可以“提高”识别效果的东西…以下是相似度代码 效果如下

qq_44749634的博客 7256

AI预测彩票,使用chatgpt和lstm神经网络(文末附源码)

AI预测彩票,使用chatgpt和lstm神经网络(文末有彩蛋)

淘淘小窝 1万+

Python实现点击选择验证码破解

运行在,若使用注意darknet生成网络模型字符串需要加前缀。 定位器训练 文件准备 准备如下两个文件 为30,其计算公式为filter=num(classes+coord+1)filter=num(classes+coord+1)30=5(1+4+1)30=5(1+4+1)代表每个框最多预测多少物体。代表一共有多少个类,这里为1。代表回归的四个位置,分别为代表物体中心点相对位置以及物体相对大小。如的标签为,的标签为。这张图的标签就是 代表一共有多少 代表存放训练数据路径位置文件 代表存档前向

毕业作品网站 5476

射频仿真软件:ADS (Advanced Design System)_(29).ADS脚本编程与自动化

ADS脚本编程为射频设计提供了强大的自动化工具,可以帮助用户实现设计流程的优化、参数扫描和优化、结果分析和报告生成等任务。选择合适的脚本语言(Python、Tcl、AEL)并合理设置ADS环境,可以显著提高设计效率和准确性。通过实际项目中的应用案例,我们可以更好地理解如何利用脚本编程解决复杂的射频设计问题。希望本文对您的ADS脚本编程学习有所帮助。

kkchenjj的博客 2468

STM32外部中断EXTI原理与飞控实时应用实战

外部中断(EXTI)是嵌入式系统中实现事件驱动和实时响应的核心机制,其本质是将外部电平变化转化为可调度的CPU中断事件。基于ARM Cortex-M NVIC架构,EXTI通过GPIO-EXTI-NVIC三级硬件通路实现低延迟信号捕获,具备边沿触发、优先级管理与挂起控制等关键能力。在四轴飞控、工业传感器、人机交互等对毫秒级响应有强需求的场景中,EXTI显著优于轮询方式,兼顾实时性与CPU资源效率。实际开发需严格遵循SYSCFG映射→EXTI配置→NVIC使能的时序逻辑,并规避常见陷阱如中断号误配、伪触发、低

weixin_36382073的博客 64

icp点选验证码破解

一个点选验证码~

weixin_52001594的博客 921

【OpenClaw从入门到精通】第60篇:多智能体协同实战——用“龙虾”搭建你的数字员工团队(2026企业版)

2026年AI Agent企业落地的核心趋势,正从“单Agent单兵作战”转向“多智能体协同组网”。本文以全球开发者先锋大会“百虾大战”真实案例为蓝本,深度拆解OpenClaw多智能体协同的技术内核——三层解耦架构(模型层-技能层-网关层),系统搭建包含项目经理、架构师、执行者、质量把关者的4大核心Agent团队。通过三种主流协作架构对比、全链路配置代码实操、故障自愈实战演练,结合电商新品上架虚拟场景全流程演示,解决企业多Agent部署中的权限隔离、任务协同、运维自治三大核心痛点。

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 765

字符型验证码反爬虫的原理和破解方法(附有字符验证码制作代码~)

点击上方“Python爬虫与数据挖掘”,进行关注回复“书籍”即可获赠Python从入门到进阶共10本电子书今日鸡汤万战自称不提刃,生来双眼篾群容。大家好,我是志斌~我们写的爬虫它实际是一种...

pdcfighting的博客 630

AUTOSAR EcuM模块介绍

AUTOSAR EcuM概述 AUTOSAR EcuM全称是Autosar ECU State Manager,位于Autosar BSW中System Service模块中,是一个独立于硬件的模块。 其主要作用是管理ECU上下电启动的状态,具体为: 初始化启动操作系统所需要的BSW(Basic Software)模块 为睡眠阶段和随后的唤醒完成微控制器的配置准备 管理ECU上的所有唤醒事件(EcuM通过唤醒验证协议验证已发生的唤醒,区分真实的唤醒事件,防止误唤醒) EcuM支持的特性列表 EcuM具有

酒无忧的博客 2995

Python爬虫-爬取猫眼演出数据

本文是该专栏的第53篇,后面会持续分享python爬虫干货知识。猫眼平台除了有影院信息之外,它还涵盖了演出信息,比如说“演唱会,音乐节,话剧音乐剧,脱口秀,音乐会,戏曲艺术,相声”等等各种演出相关信息。而本文,笔者将以猫眼平台为例,基于Python爬虫实现获取各种演出信息的数据。废话不多说,具体细节部分以及详细思路逻辑,笔者将在正文结合完整代码进行详细说明。(附带完整代码)

Python进阶专栏《爬虫实战进阶》,《Pyppeteer从入门到精通》原创作者 568

webdriver启动浏览器之后无法打开在程序中指定的url

1.想要使用selenium,必须先安装. 可以在pycharm中,file--->settings--->project interpreter--->然后点击面板中的加号,搜索selenium即可 也可以在终端中通过pip3 installselenium 安装完成之后可以通过from selenium import webdriver试一下,是否报错,如果不报错证明安装没有问题. 2.安装浏览器驱动 selenium安装完成之后,还需要安装浏览器驱动,这里我只说一下安装g.

m0_54625110的博客 1396

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

要想破解验证码,就得从了解开始!

最近在研究验证码安全,本文就来介绍四种流行的验证码(滑动拼图、文字点选、语序点选、空间推理),写这篇文章的出发点并非是想绕过或破解验证码,而是根据自身业务情况来选择对应的验证码类型。

weixin_40794177的博客 513

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

selenium+opencv 破解顶象滑动验证码

五一闲的蛋疼,就想写个脚本来实现自动体温打卡功能 以我的学校的网站为例: 学校的体温打卡网站 实现这个功能需要掌握的基本要求: 爬虫基础 ------- 推荐《Python 3网络爬虫开发实战》这本书 opencv基础 -------- 学习opencv(学到第7节就可以了)+opencv中文文档 python基础 前端基础 配置: 需要导入selenium opencv-python 库和下载chromedriver 驱动器 这些网上的教程都有,我就不多概述了 首先,咱

典典想睡觉 4262

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

顶象面积点选验证码----Python破解代码

可解顶象的面积点选验证码 在同级目录下保存一张名为1.png的面积点选验证码图片,运行代码即可获得最大面积的像素坐标。 思路借鉴:100%成功率的顶象面积验证码识别方案————————以下是笔者的碎碎念————————————打算出一个系列,把市面上所有验证码做一个破解,下一个准备做贴吧的旋转验证码,就是这种 如果大家有什么想要解决的验证码,可以在评论区留言下,我会优先做你们评论的验证码的...........................

qq_44749634的博客 3122

破解含语序问题的点击验证码

设计思路 前言 国家企业信用信息公示系统中的验证码是按语序点击汉字,如下图所示: 即,如果依次点击:‘无’,‘意’,‘中’,‘发’,‘现’,就会通过验证。 本项目的破解思路主要分为以下步骤: 使用目标探测网络YOLOV2进行汉字定位 设计算法进行汉字切割 使用darknet的分类器进行汉字识别 设计算法进行汉字纠错与语序识别 Github仓库直通车 汉字定位与汉字识别 本项目的汉字定位和汉字...

diegen8187的博客 1万+

python自动化测试之破解滑动验证码

在Web自动化测试的过程中,经常会被登录的验证码给卡住,不知道如何去通过验证码的验证。 一般的情况下遇到验证码我们可以都可以找开发去帮忙解决,关闭验证码,或者给一个万能的验证码!

软件测试技术交流分享 531

python爬虫解决极验验证码问题

使用2captcha的服务解决登录时的极验验证码 爬虫在抓网站数据时,不可避免要和验证码做长久斗争。当然能绕过最好,但是总有绕不过的验证码,此时,对于简单的可以尝试绕过,有难度的对接打码平台。现在验证码多种多样,点选,滑动,英文字母组合等。所以要爬取一些网站的数据也越来越麻烦。   本篇就针对简书的依次点击文字的验证码进行破解 1、简书的验证技术采用的是极验提供的。 2、...

sunon_的博客 1万+

破解 语序点选验证码

转自:https://blog.youkuaiyun.com/diegen8187/article/details/85265113 设计思路 前言 国家企业信用信息公示系统中的验证码是按语序点击汉字,如下图所示: 即,如果依次点击:‘无’,‘意’,‘中’,‘发’,‘现’,就会通过验证。 本项目的破解思路主要分为以下步骤: 使用目标探测网络YOLOV2进行汉...

qq_34218221的博客 8945

文字点选验证码再也不是难题,通过率 96% 的深度学习了解一下!

“ 阅读本文大概需要 3 分钟。 ”验证码是计算机领域发明的一大障碍,它已经成为爬虫工程师最大的拦路虎,是爬虫工程师必须要面对的一道屏障。面对上面这种无干扰且较规整的字符型验证码,Pyt...

静觅 6525

Python破解携程点击文字验证

本次使用到的知识 Python selenium模块 百度通用文字识别SDK的调用,api自己去申请,每天最多50次免费调用,文档地址:http://ai.baidu.com/docs#/OCR-API/top,用阿里和腾讯的也可以。 Python 类的使用 Python 图片二值化 Python base64模块 Python IO 发现问题 上一个博客写的是使用seleni...

洋洋的博客 1万+
上一篇: 《封号码罗》python爬虫之pyppeteer异步爬虫牛刀小试(九)
下一篇: 《封号码罗》python爬虫之模拟登陆获取JWT再发送POST请求(十一)
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值