跳到主要内容

rpa

rpa 库提供基于浏览器的流程自动化(RPA)能力,可模拟点击、输入、选择、登录爆破等真实用户操作,常用于复杂登录流程的自动化、带验证码的爆破与动态站点交互。

典型使用场景:

  • 自动化遍历:rpa.Start(url, opts...) 启动浏览器自动化并返回请求流,配 rpa.click / rpa.input / rpa.select 模拟交互,rpa.depth / rpa.maxUrl / rpa.whiteDomain / rpa.blackDomain 控制范围。
  • 登录爆破:rpa.Bruteforce(url, opts...) 对登录页爆破,配 rpa.bruteUserElement / rpa.brutePassElement / rpa.bruteButtonElement 定位元素,rpa.bruteUsername / rpa.brutePassword 提供字典,rpa.bruteCaptchaElement 处理验证码。

与相邻库的关系:rpa 走真实浏览器,与 crawlerx(浏览器爬虫)、simulator(模拟登录爆破)、browser(浏览器实例)思路相通,专攻"需要真实交互"的自动化场景。

共 20 个函数

函数索引

函数参数返回值说明
rpa.blackDomainmatchStr stringConfigOptWithBlackDomain 添加域名黑名单(glob 匹配,导出名为 rpa.blackDomain)
rpa.bruteButtonElementelement stringConfigOptWithButtonElement 设置登录提交按钮的元素选择器(导出名为 rpa.bruteButtonElement)
rpa.bruteCaptchaElementelement string, pic stringConfigOptWithCaptchaElement 设置验证码输入框与验证码图片的元素选择器(导出名为 rpa.bruteCaptchaElement)
rpa.brutePassElementelement stringConfigOptWithPasswordElement 设置密码输入框的元素选择器(导出名为 rpa.brutePassElement)
rpa.bruteUserElementelement stringConfigOptWithUsernameElement 设置用户名输入框的元素选择器(导出名为 rpa.bruteUserElement)
rpa.clickselector stringConfigOptClickMethod 在爆破前对指定元素执行点击操作(导出名为 rpa.click)
rpa.depthdepth intConfigOptWithSpiderDepth 设置 RPA 爬虫的扫描深度(导出名为 rpa.depth)
rpa.headerss stringConfigOptWithHeader 设置请求头,可传入 headers 文件路径或 JSON 字符串(导出名为 rpa.headers)
rpa.inputselector string, inputStr stringConfigOptInputMethod 在爆破前向指定输入框填入文本(导出名为 rpa.input)
rpa.maxUrlcount intConfigOptWithUrlCount 设置 URL 总数上限,超出后停止扫描(导出名为 rpa.maxUrl)
rpa.selectselector string, item stringConfigOptSelectMethod 在爆破前对指定下拉框选择某个选项(导出名为 rpa.select)
rpa.strictUrlstatus boolConfigOptWithStrictUrlDetect 设置是否严格检测 URL 是否存在风险(导出名为 rpa.strictUrl)
rpa.timeouttimeout intConfigOptWithTimeout 设置单链接超时时间(导出名为 rpa.timeout)
rpa.whiteDomainmatchStr stringConfigOptWithWhiteDomain 添加域名白名单(glob 匹配,导出名为 rpa.whiteDomain)

可变参数函数索引

函数参数返回值说明
rpa.Bruteforceurl string, opts ...ConfigOptstring, stringBruteForceStart 对目标登录页面进行基于浏览器的自动化登录爆破(导出名为 rpa.Bruteforce)
rpa.Starturl string, opt ...core.ConfigOptchan core.RequestIf, error启动一个基于浏览器的 RPA 爬虫,对目标 URL 进行自动化爬取(导出名为 rpa.Start)
rpa.brutePasswordpassword ...stringConfigOptWithPassword 设置爆破密码(导出名为 rpa.brutePassword)
rpa.bruteUserPassPathfilepath ...stringConfigOptWithUserPassPath 从文件加载用户名/密码字典(导出名为 rpa.bruteUserPassPath)
rpa.bruteUsernameusername ...stringConfigOptWithUsername 设置爆破用户名(导出名为 rpa.bruteUsername)
rpa.proxyurl string, userinfo ...stringConfigOptWithBrowserProxy 设置浏览器代理地址,可选附带用户名密码(导出名为 rpa.proxy)

函数详情

blackDomain

blackDomain(matchStr string) ConfigOpt

WithBlackDomain 添加域名黑名单(glob 匹配,导出名为 rpa.blackDomain)

参数

参数名类型说明
matchStrstring域名 glob 匹配表达式

返回值

序号类型说明
r1ConfigOptRPA 配置可选项

示例

opt = rpa.blackDomain("*.ad.example.com")
println(opt)

bruteButtonElement

bruteButtonElement(element string) ConfigOpt

WithButtonElement 设置登录提交按钮的元素选择器(导出名为 rpa.bruteButtonElement)

参数

参数名类型说明
elementstring登录按钮的 CSS selector

返回值

序号类型说明
r1ConfigOpt爆破配置可选项

示例

opt = rpa.bruteButtonElement("#login")
println(opt)

bruteCaptchaElement

bruteCaptchaElement(element string, pic string) ConfigOpt

WithCaptchaElement 设置验证码输入框与验证码图片的元素选择器(导出名为 rpa.bruteCaptchaElement)

参数

参数名类型说明
elementstring验证码输入框的 CSS selector
picstring验证码图片的 CSS selector

返回值

序号类型说明
r1ConfigOpt爆破配置可选项

示例

opt = rpa.bruteCaptchaElement("#captcha", "#captcha-img")
println(opt)

brutePassElement

brutePassElement(element string) ConfigOpt

WithPasswordElement 设置密码输入框的元素选择器(导出名为 rpa.brutePassElement)

参数

参数名类型说明
elementstring密码输入框的 CSS selector

返回值

序号类型说明
r1ConfigOpt爆破配置可选项

示例

opt = rpa.brutePassElement("#password")
println(opt)

bruteUserElement

bruteUserElement(element string) ConfigOpt

WithUsernameElement 设置用户名输入框的元素选择器(导出名为 rpa.bruteUserElement)

参数

参数名类型说明
elementstring用户名输入框的 CSS selector

返回值

序号类型说明
r1ConfigOpt爆破配置可选项

示例

opt = rpa.bruteUserElement("#username")
println(opt)

click

click(selector string) ConfigOpt

ClickMethod 在爆破前对指定元素执行点击操作(导出名为 rpa.click)

参数

参数名类型说明
selectorstring目标元素的 CSS selector

返回值

序号类型说明
r1ConfigOpt爆破配置可选项

示例

opt = rpa.click("#agree")
println(opt)

depth

depth(depth int) ConfigOpt

WithSpiderDepth 设置 RPA 爬虫的扫描深度(导出名为 rpa.depth)

参数

参数名类型说明
depthint扫描深度

返回值

序号类型说明
r1ConfigOptRPA 配置可选项

示例

opt = rpa.depth(3)
println(opt)

headers

headers(s string) ConfigOpt

WithHeader 设置请求头,可传入 headers 文件路径或 JSON 字符串(导出名为 rpa.headers)

参数

参数名类型说明
sstringheaders 文件路径或 JSON 字符串

返回值

序号类型说明
r1ConfigOptRPA 配置可选项

示例

opt = rpa.headers(`{"User-Agent": "yak-rpa"}`)
println(opt)

input

input(selector string, inputStr string) ConfigOpt

InputMethod 在爆破前向指定输入框填入文本(导出名为 rpa.input)

参数

参数名类型说明
selectorstring输入框的 CSS selector
inputStrstring要填入的文本

返回值

序号类型说明
r1ConfigOpt爆破配置可选项

示例

opt = rpa.input("#extra", "value")
println(opt)

maxUrl

maxUrl(count int) ConfigOpt

WithUrlCount 设置 URL 总数上限,超出后停止扫描(导出名为 rpa.maxUrl)

参数

参数名类型说明
countintURL 数量上限

返回值

序号类型说明
r1ConfigOptRPA 配置可选项

示例

opt = rpa.maxUrl(100)
println(opt)

select

select(selector string, item string) ConfigOpt

SelectMethod 在爆破前对指定下拉框选择某个选项(导出名为 rpa.select)

参数

参数名类型说明
selectorstring下拉框的 CSS selector
itemstring要选择的选项

返回值

序号类型说明
r1ConfigOpt爆破配置可选项

示例

opt = rpa.select("#role", "admin")
println(opt)

strictUrl

strictUrl(status bool) ConfigOpt

WithStrictUrlDetect 设置是否严格检测 URL 是否存在风险(导出名为 rpa.strictUrl)

参数

参数名类型说明
statusbool是否启用严格 URL 检测

返回值

序号类型说明
r1ConfigOptRPA 配置可选项

示例

opt = rpa.strictUrl(true)
println(opt)

timeout

timeout(timeout int) ConfigOpt

WithTimeout 设置单链接超时时间(导出名为 rpa.timeout)

参数

参数名类型说明
timeoutint超时时间(秒)

返回值

序号类型说明
r1ConfigOptRPA 配置可选项

示例

opt = rpa.timeout(10)
println(opt)

whiteDomain

whiteDomain(matchStr string) ConfigOpt

WithWhiteDomain 添加域名白名单(glob 匹配,导出名为 rpa.whiteDomain)

参数

参数名类型说明
matchStrstring域名 glob 匹配表达式

返回值

序号类型说明
r1ConfigOptRPA 配置可选项

示例

opt = rpa.whiteDomain("*.example.com")
println(opt)

可变参数函数详情

Bruteforce

Bruteforce(url string, opts ...ConfigOpt) (string, string)

BruteForceStart 对目标登录页面进行基于浏览器的自动化登录爆破(导出名为 rpa.Bruteforce)

必填参数

参数名类型说明
urlstring目标登录页面 URL

可选参数

参数名类型说明
opts...ConfigOpt可选项,如 rpa.bruteUsername、rpa.brutePassword、rpa.bruteUserElement 等

返回值

序号类型说明
r1string爆破成功的用户名
r2string爆破成功的密码

示例

// 对登录页面进行爆破(示意性示例,需要本地已安装浏览器)
username, password = rpa.Bruteforce("http://example.com/login",

rpa.bruteUsername("admin"),
rpa.brutePassword("admin", "123456"),
rpa.bruteUserElement("#username"),
rpa.brutePassElement("#password"),
rpa.bruteButtonElement("#login"),

)
println(username, password)

Start

Start(url string, opt ...core.ConfigOpt) (chan core.RequestIf, error)

启动一个基于浏览器的 RPA 爬虫,对目标 URL 进行自动化爬取(导出名为 rpa.Start)

必填参数

参数名类型说明
urlstring起始 URL

可选参数

参数名类型说明
opt...core.ConfigOpt可选项,如 rpa.depth、rpa.proxy、rpa.maxUrl、rpa.timeout 等

返回值

序号类型说明
r1chan core.RequestIf请求结果的 channel,可使用 for-range 遍历
r2error错误信息

示例

// 启动 RPA 爬虫并遍历抓取到的请求(示意性示例,需要本地已安装浏览器)
ch = rpa.Start("http://example.com", rpa.depth(2), rpa.maxUrl(50))~

for req := range ch {
println(req.Url())
}

brutePassword

brutePassword(password ...string) ConfigOpt

WithPassword 设置爆破密码(导出名为 rpa.brutePassword)

可选参数

参数名类型说明
password...string一个或多个密码

返回值

序号类型说明
r1ConfigOpt爆破配置可选项

示例

opt = rpa.brutePassword("admin", "123456")
println(opt)

bruteUserPassPath

bruteUserPassPath(filepath ...string) ConfigOpt

WithUserPassPath 从文件加载用户名/密码字典(导出名为 rpa.bruteUserPassPath)

可选参数

参数名类型说明
filepath...string一个或两个文件路径,传一个时用户名密码使用同一文件

返回值

序号类型说明
r1ConfigOpt爆破配置可选项

示例

opt = rpa.bruteUserPassPath("/tmp/users.txt", "/tmp/pass.txt")
println(opt)

bruteUsername

bruteUsername(username ...string) ConfigOpt

WithUsername 设置爆破用户名(导出名为 rpa.bruteUsername)

可选参数

参数名类型说明
username...string一个或多个用户名

返回值

序号类型说明
r1ConfigOpt爆破配置可选项

示例

opt = rpa.bruteUsername("admin", "root")
println(opt)

proxy

proxy(url string, userinfo ...string) ConfigOpt

WithBrowserProxy 设置浏览器代理地址,可选附带用户名密码(导出名为 rpa.proxy)

必填参数

参数名类型说明
urlstring代理地址

可选参数

参数名类型说明
userinfo...string可选的代理用户名与密码

返回值

序号类型说明
r1ConfigOptRPA 配置可选项

示例

opt = rpa.proxy("http://127.0.0.1:8080")
println(opt)