# API常见问题

# 1.通过命令行启动客户端报错

请确认客户端版本在V3.2.2及以上,Windows 11操作系统的用户建议使用V3.3.0及以上版本
请确认使用的API调用方式及参数配置正确
请确认是否使用管理员权限运行CMD或PowerShell命令行工具
请确认是否在智纹客户端主目录下打开,或已切换到智纹主路径

# 2.使用有界面服务和无界面服务启动Local API服务有何区别呢?

1.有界面服务会被限制同一账号只能在一台设备上登录
2.appId和appSecret则不限制同一账号在多台设备上同时登录的场景,如果有一个账号需要在多台机器上执行自动化任务的需求,
则可以使用headless模式配合appId和appSecret调用Local API接口
3.无界面服务调用接口需要进行签名验证,请求参数中需传递signature字段

# 3.appId和appSecret在哪里获取

打开智纹浏览器客户端,点击系统设置菜单,然后点击Local API选项,点击开启鉴权控制功能。如果未显示该界面,请联系系统管理员分配相应权限

# 4.如何重置appSecret?

进入系统设置界面,然后点击Local API选项,点击重置appSecret按钮,重置后请注意妥善保存新的appSecret值

# 5.如果更换了appSecret,用旧值启动的服务调用的api接口还能继续用吗?

不能。会返回appSecret失效的错误信息,一个账号仅能对应一个appSecret值,因此请谨慎执行重置操作,重置后旧值将立即失效,请安全地保存新的appSecret值

# 6.一个用户可以在多台机器同时使用api吗?

无界面模式支持多台机器同时调用API接口,有界面模式不支持多设备同时使用

# 7.请求接口报签名验证失败,是什么原因?

检查请求体中是否包含signature字段,且signature=MD5(MD5(appId+appSecret)),即将appId和appSecret字符串拼接后进行第一次MD5加密,再对加密结果进行第二次MD5加密,最终得到32位小写十六进制签名字符串

# 8.自动化(webdriver、playwright、puppeteer等)报连接失败是怎么回事?

检查连接端口号是否正确,此处端口为打开浏览器接口返回的ws字段中的WebSocket端口,非智纹客户端进程的API服务端口
ws字段示例:"ws://127.0.0.1:59192/devtools/browser/d25b3f5d-21a4-49d2-9eb8-582c67dc4e4d"
也可以直接使用自动化工具连接WebSocket地址,进行自动化操作,例如:

const browser = await puppeteer.connect({
  browserWSEndpoint: 'ws://127.0.0.1:59192/devtools/browser/d25b3f5d-21a4-49d2-9eb8-582c67dc4e4d',
})
const pages = await browser.pages()
const page = await browser.newPage()
await page.goto('https://www.baidu.com')

# 9.使用接口服务时,不能同时启动智纹浏览器客户端界面?

可以同时启动智纹浏览器客户端界面和使用Local API接口服务,但仅限单台设备使用接口服务
如果需要多台设备同时使用Local API接口服务,请使用无界面模式

# 10.使用命令行运行智纹浏览器.exe,请求接口突然没有响应了\程序突然卡住了?

因为控制台默认开启了"快速编辑模式"。当"快速编辑模式"开启时,当您的鼠标在控制台界面上点击,就会自动进入编辑模式(可以看到
界面上会出现一个表示编辑的光标),可能导致控制台输出阻塞甚至后台程序进程阻塞。按回车键或Esc键或鼠标右键后,程序可恢复继续运行

# 11.请求api接口时报错:访问接口超出频率限制,请稍后再试是什么问题?

接口有请求频率限制机制,每个接口每分钟最多请求次数可以在客户端Local API设置中查看,请合理控制API请求频率

# 12.请求api接口时报错:缺少请求参数

请检查参数配置设置,POST接口参数需要放在请求体(body)中,使用JSON格式传递。建议先使用Postman或Apifox工具调试通过后再使用脚本调用

# 13.命令行启动报错:Invalid credential information, please check the parameters and restart the interface free mode

请检查命令行启动参数中的appId和appSecret值是否正确,填写正确的参数值后重新启动服务

# 14.接口调用支持多线程吗?

支持

# 15.调用打开浏览器接口耗时较长?

打开浏览器环境的速度与本机网络连接及环境配置的代理服务有关,请检查网络连接状态。

# 16.python运行webdriver报错executable_path has been deprecated,please pass in a Service object.

使用的Selenium版本不同,4.0版本的Selenium需要通过driver = webdriver.Chrome(service=Service(webdriver_path), options=options)方式创建WebDriver实例

# 17.使用java对接api,运行时中文乱码导致数据序列化错误

指定UTF-8字符编码运行jar包:java -Dfile.encoding=UTF-8 -jar xxx.jar

# 18.接口参数使用不规范而导致程序出错甚至闪退

请注意,使用Local API创建或修改浏览器窗口,或执行其他操作时,接口参数必须符合API规范要求,不要随意删除或修改参数,不要传递未知含义的值或不符合规范的数据类型

# 19.使用api打开浏览器,每次都会自动打开之前打开的网页,如何关闭?

# 打开系统设置界面,将本地设置中的"打开上次关闭时的标签页"选项关闭即可。

# 20.使用api打开浏览器,每次都会自动打开当前账号所属平台网址,如何关闭?

# 打开系统设置界面,将本地设置中的"打开当前账号所属平台网址"选项关闭即可。