概览

Yogg是一个简单的,可扩展的,使用Java编写的开源短信轰炸机。项目地址:Yogg on GitHub

Yogg可以利用互联网上一些网站的短信网关发送短信验证码到目标手机号码。

你需要指定一个网站库以为Yogg的运行提供必要的输入,Yogg消费网站库中的网站,模拟用户在网站上的操作,尝试提交针对目标手机号的短信发送请求。

Yogg overview

特性

  • 元数据驱动架构
  • 灵活的执行流程配置
  • 支持多种类型的网站库
  • 可视化的执行统计信息
  • 支持调度任务(开发中)

工作原理

Yogg内置了一个浏览器,它使用状态机描述通过浏览器在网站上发送短信的执行流程。Yogg执行过程中会搜寻一些必要的页面元素并执行相应的操作。默认的流程配置如下:
execution flow

一个成功的执行流程中大致包含以下操作:

  • 初始化浏览器
  • 访问目标页面(目标页面即可能的包含短信发送的页面,如网站的注册页面)
    • 初始化网站主页
    • 点击主页上相应的链接,跳转到目标页面
  • 填写表单
    • 在手机号输入栏输入目标手机号码
    • 识别图片验证码,并输入识别后验证码结果
  • 提交短信发送请求
    • 点击“发送短信”按钮

快速入门

系统要求

  • 安装Java开发工具包(JDK)版本8或以上版本,可以从这里下载。
  • 安装图片验证码识别引擎tesseract 3.05.01,请保证 TESSDATA_PREFIX环境变量设置为“tessdata”目录的父目录

下载

移步至发布页面下载最新版本的可执行jar包。

配置

开始启动Yogg前,你可能需要对它进行一些自定义设置,下面是需要关注一些配置项:

  • threads: 用来发送短信的线程池的线程数,执行过程中每一个网站消耗一个线程,默认值:20
  • timeout: 发送每条短信的超时时间,默认值90000 ms
  • proxy: Yogg访问网站时使用的代理
    • type: 代理的类型,目前支持direct(直接连接)、http和socks
    • host: 代理主机的地址
    • port: 代理主机的端口号
  • DataSource: 数据源
    • Crawler: 依赖爬虫作为网站库
      • start url: 爬虫收集网站的起始url
    • File: 由本地文件作为网站库
      • file path: 本地网站文件的路径
    • Database: 由数据库作为网站库:[website].[url]
      • type: 数据源类型,目前仅支持MySQL
      •  username: 数据库用户名
      •  password: 数据库密码

启动

打开命令行界面,进入到下载的可执行的jar包所在目录,运行:

java -jar yogg-${version}.jar

构建

Yogg 使用 Apache Maven 进行构建。构建Yogg只需运行:

mvn -DskipTests clean package

构建物会生成在 target目录下。

限制

  • 鉴于互联网上存在着各式各样的网站,Yogg肯定无法适配所有类型的网站,默认执行流程的配置覆盖的场景有限,页面元素的匹配规则也只适用于中国网站和中国的手机号,若有特殊需求可以自定义执行流程和页面元素匹配规则以增加Yogg的准确率。
  • Yogg内置的图片验证码解析引擎是Tesseract,它在突破复杂图片验证码方面显得力不从心,短信发送的效果将会大打折扣,但是Tesseract提供了训练方法可以提高验证码识别精确度。
  • 由于Yogg缺少对网站依赖的短信网关的控制权,所以无法自定义短信内容。
  • 频繁的使用Yogg会导致效用减弱。大部分网站为了防止短信验证码的滥用,都会设置一些策略以控制发送频率,如限制每个ip每天最多发送的短信数量。可以使用Tor代理以改善这种情况。

Leave a Reply

Your email address will not be published. Required fields are marked *