用影刀做自动化的朋友,有时候需要直接接入第三方的指纹浏览器,需要灵活定制自己的指纹,做防关联操作,现在以启元浏览器为例,启元浏览器是真内核,经过多方指纹检测表现不错的一款指纹浏览器。这篇文章把对接流程整理了一遍,分四步,跟着走一遍就能跑起来。
第一步:在启元浏览器中准备好窗口环境
先进启元浏览器的环境管理,把要用到的窗口建好,后面影刀调用的就是这些环境。
然后给窗口装上影刀扩展插件,这个插件是影刀连通浏览器的桥梁,少了它后面步骤都跑不通。
选择要安装插件的窗口,我这里直接选了全部,省得一个个来。
第二步:在影刀中添加启元浏览器插件
打开影刀,进自动化插件管理,准备把启元浏览器注册进来。
点击"添加自定义浏览器自动化"。
接下来需要填浏览器的安装路径,回到启元浏览器里找一下路径入口。
复制完整路径。这里有个细节要注意:不同内核的路径不一样,默认拿到的是最新版内核的路径。如果你的窗口混用了多个内核版本,建议统一成同一个,后面省不少麻烦。
回到影刀,手动粘贴刚才复制的路径。
点安装。
装好后插件列表里就能看到启元浏览器了,这步完成。
第三步:在影刀中创建启元浏览器 API 模块
影刀不直接暴露浏览器控制接口,需要自己写一个 Python 模块来调用启元浏览器的 Open API。先新建一个 Python 模块。
模块源码如下,封装了三个常用方法:获取环境列表、打开浏览器、关闭浏览器,日常用够了。
# 使用提醒:
# 1. xbot包提供软件自动化、数据表格、Excel、日志、AI等功能
# 2. package包提供访问当前应用数据的功能,如获取元素、访问全局变量、获取资源文件等功能
# 3. 当此模块作为流程独立运行时执行main函数
# 4. 可视化流程中可以通过"调用模块"的指令使用此模块
import xbot
from xbot import print, sleep
from .import package
from .package import variables as glv
# 影刀 Python 模块标准格式:所有代码必须放在 main 函数内
import requests
BASE = "http://127.0.0.1:9001"
def get(path, **params):
r = requests.get(BASE + path, params=params)
r.raise_for_status()
return r.json()
def post(path, **body):
r = requests.post(BASE + path, json=body)
r.raise_for_status()
return r.json()
def open_browser(env_code):
res = post("/open/env/open", code=env_code, headless=False)
print("[浏览器] 结果:", res)
debug_port = res["data"]["debug_port"]
print(f"[浏览器] 调试端口={debug_port}")
return res
def close_browser(env_code):
print("[关闭] 正在执行兜底关闭...")
res = post("/open/env/close", code=env_code)
print("[关闭] 完成,结果:",res)
return res
def browser_list():
print("[批量] 查询环境列表...")
res = get("/open/env/list", page=1, page_size=3)
for env in res["data"]["items"]:
print(f"环境结果={env}")
return [item['code'] for item in res['data']['items']]
代码粘进去之后,还需要安装 requests 依赖库,否则代码跑不起来。进依赖管理,搜索 requests。
输入 requests,点安装,装完就好了。
第四步:在影刀中创建应用并运行
模块准备好了,在影刀里建应用就顺了。流程大致是:先调模块里的 browser_list 获取环境列表,遍历列表逐个调 open_browser 打开浏览器,执行完业务操作后,再调 close_browser 关掉。
在"打开网页"这个节点,浏览器选项要切换成刚才添加的启元浏览器,默认是系统浏览器,连不上的。
跑一遍,执行日志如下,每步都有输出说明对接正常。
常见问题
如果运行时浏览器连不上,报类似连接拒绝的错误,大概率是没开开发者模式,看一下这张图里的提示。
进启元浏览器设置,把开发者模式打开,重新跑一次就行了。