记使用AScript自动化操作ios苹果手机

公司业务需要自动化操作手机,本来以为很困难,没想到使用AScript工具出乎意料的简单,但是还有很多坑存在,写个博客记录一下。

工具信息:

手机:iphone7

系统版本:ios15

AScript官方文档链接:https://ascript.cn/docs/ios/download/app

1.手机上下载AScript和WDA框架两个软件,下载很简单,直接扫官方文档中的二维码就行。

2.WDA框架激活。直接按照官方文档下载爱思助手和iTunes驱动。

3.与官方文档不同的是ios15没有开发者模式,只要在爱思助手实时屏幕投屏成功就证明链接成功了。点击手机上的AScript-WDA软件,出现Automation Running。

4.有两种写代码运行方式,1.web端2.pycharm安装插件

不要用pycharm!不要用pycharm!不要用pycharm!安装插件方式根本用不到,即使安装好插件也是调用的web端的代码。

5.打开http://192.168.50.190:9096/modules.html创建一个新工程,域名端口是自己手机AScript软件里的。

6.创建新工程后会进入后台页面。

7.具体自动化操作可以查看开发文档,大部分日常操作应该能满足。

注意!想在手机输入框输入文字,需要在手机上把键盘设置成as键盘才行。

8.自动化代码实例

from ascript.ios import action
from ascript.ios import ime
import time
import requests
from ascript.ios import action
from ascript.ios.node import Selector
from ascript.ios import system
import random


def search():
    num = 5
    while True:
        randint = random.randint(0, 100)
        time.sleep(random.randint(0, 5))
        if num % 5 == 0:
            #判断页面内容有没有"没有找到相关内容,换个词试试吧"
            if Selector().label("没有找到相关内容,换个词试试吧").find():
                return
            #判断页面内容有没有包含"没有找到相关"的句子
            if Selector().label("没有找到相关", 1).find():
                return
            if Selector().label("相关笔记较少", 1).find():
                return
            if Selector().label("相关内容不予展示", 1).find():
                return
            
            if Selector().label("电池电量", 1).find():
                xs = Selector().value("关闭").find().click()
        if randint % 10 == 0:
            action.click(279, 1347)
            time.sleep(random.randint(2, 5))
            action.click(61, 150)

        action.slide(658 + randint, 1904 + randint, 361 + randint, 1097 + randint)


def start(text):
    # 根据包名启动app,推荐使用
    print(system.app_current())
    system.app_stop(bundle_id="com.xxx.discover")
    system.app_start(bundle_id="com.xxx.discover")
    time.sleep(8)

     #搜索位置点击,xy坐标
    action.click(1150, 1110)
    time.sleep(3)
    #输入框输入文字
    ime.input_text(text)
    #回车
    ime.input_enter()
    time.sleep(3)
    #找到第一个筛选并点击
    xs = Selector().value("筛选").find().click()
    zx = Selector().value("最新").find().click()
    xs = Selector().value("筛选").find().click()
    search()

    # xs = Selector().value("筛选").find().click()
    # zh = Selector().value("综合").find().click()
    # xs = Selector().value("筛选").find().click()
    # search()


def main():
    print('开始点击')
    start('面膜')


main()

<think>好的,我现在要帮用户解决如何使用JavaScript编写自动刷视频挂机脚本的问题。首先,我需要理清用户的需求。用户提到参考了两个引用,一个是基于Playwright的Python和JavaScript程序,另一个是百度极速版APP的JavaScript自动化脚本,涉及到Puppeteer、Selenium和Appium。用户可能希望用JavaScript实现类似的功能,但需要明确是针对网页还是原生APP。 用户的问题是关于自动刷视频的脚本,所以首先要确定目标平台。如果是网页端的视频平台,使用浏览器自动化工具如Puppeteer或Playwright比较合适。如果是手机APP,可能需要Appium。但用户提到JavaScript,可能更倾向于网页端,因为原生APP通常用Appium需要其他语言配合。 接下来,我需要考虑步骤。首先,用户需要安装相关工具,比如Puppeteer。然后,编写脚本自动打开浏览器、访问网站、模拟点击和滚动等操作。同时,要处理可能的反检测机制,比如随机等待时间、模拟人类行为模式。引用1提到使用Playwright防止检测,引用2提到了Appium用于原生APP,但用户可能更关注网页端。 需要确保代码示例正确,比如使用Puppeteer的基本流程,包括启动浏览器、打开页面、等待元素、点击按钮等。同时,注意事项部分要提到法律风险、道德问题以及平台的反作弊措施。此外,用户可能需要优化脚本,比如处理弹窗、随机滚动、模拟观看时间等。 可能的问题是如何处理动态加载的内容,比如无限滚动,需要触发滚动事件。另外,如何保持会话持久,避免频繁登录,可能需要处理cookies。此外,引用1和2中的方法如何整合到当前解决方案中,比如Playwright的防检测特性是否比Puppeteer更好,是否需要推荐? 最后,生成相关问题,帮助用户深入理解,比如如何避免被封禁、提升脚本效率、处理验证码等。需要确保回答结构清晰,分步骤说明,代码正确,注意事项全面,并且引用相关的引用内容。</think>以下是如何使用JavaScript编写自动刷视频挂机脚本的完整方案: ### 一、基础实现原理 1. 使用浏览器自动化框架(如Puppeteer)控制浏览器行为 2. 通过DOM操作模拟用户点击、滚动等交互动作 3. 基于定时器实现连续操作自动化 4. 利用随机延迟函数模拟人类行为模式[^1][^2] ### 二、具体实现步骤 ```javascript const puppeteer = require('puppeteer'); (async () => { const browser = await puppeteer.launch({headless: false}); const page = await browser.newPage(); // 设置视口参数 await page.setViewport({width: 1080, height: 1920}); // 访问目标网站 await page.goto('https://example-video-platform.com'); // 主循环函数 const videoInteraction = async () => { // 随机延迟(5-15秒) await page.waitForTimeout(Math.random() * 10000 + 5000); // 随机滚动页面 await page.mouse.wheel({deltaY: Math.random() * 500 + 200}); // 点击播放按钮 await page.click('.video-player > .play-button'); // 模拟观看时间(30-120秒) await page.waitForTimeout(Math.random() * 90000 + 30000); } // 持续执行操作 while(true) { await videoInteraction(); await page.reload(); // 刷新页面加载新内容 } })(); ``` ### 三、关键优化技术 1. **防检测机制**: - 使用`puppeteer-extra-plugin-stealth`插件隐藏自动化特征 - 随机化鼠标移动轨迹 - 模拟非匀速滚动 - 动态切换UserAgent 2. **性能优化**: ```javascript // 内存管理示例 setInterval(() => { if (performance.memory.usedJSHeapSize > 500000000) { location.reload(); } }, 60000); ``` 3. **异常处理**: ```javascript try { await page.click('.video-item'); } catch (error) { console.log('元素定位失败,执行备用方案'); await page.evaluate(() => { document.querySelectorAll('video')[0].play(); }); } ``` ### 四、注意事项 1. 法律风险:需遵守目标平台的《服务条款》,部分平台禁止自动化操作 2. 道德约束:建议仅用于个人测试,避免商业用途或流量作弊 3. 资源消耗:建议在独立设备运行,避免影响正常使用 4. 反检测机制:需定期更新操作模式(建议每周调整参数) ### 五、移动端适配方案 对于APP端实现,建议采用Appium框架: ```javascript const webdriver = require('webdriverio'); const options = { capabilities: { platformName: "Android", appPackage: "com.baidu.video", appActivity: ".MainActivity" } }; async function mobileScript() { const client = await webdriver.remote(options); // 滑动操作 await client.touchAction([ { action: 'press', x: 500, y: 1500 }, { action: 'moveTo', x: 500, y: 500 }, 'release' ]); } ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值