【原创】抖音关键词搜索

简介: 【原创】抖音关键词搜索
本文所有教程及源码、软件仅为技术研究。不涉及计算机信息系统功能的删除、修改、增加、干扰,更不会影响计算机信息系统的正常运行。不得将代码用于非法用途,如侵立删!

抖音关键词搜索脚本

环境

  • win10
  • 雷电5
  • Android7.1
  • Python3.9
  • Auto.js 7 PRO
  • mitmproxy4.0

Auto.js 根据关键词搜索并滑动

functionmain(url, num, gap, timeout) {

   // 这里写脚本的主逻辑

   threads.start(function () {

       //脚本开始时间

       varstarttime=newDate();

       console.info("脚本开始时间:"+Time_format(starttime))

       console.info("启动脚本")

       console.info("滑动执行次数:"+num+"次")

       console.info("滑动间隔时间:"+gap+"秒")

       console.info("数据加载超时时间:"+timeout+"秒")

       //悬浮窗 控制台

       console.show();

       //启用按键监听

       events.observeKey();

       //监听音量上键按下

       events.onKeyDown("volume_down", function(event){

           console.info("停止脚本");

           exit();

       });

       // 效验代理

       proxy();

       //启动APP

       toast("启动APP")

       opendy();

       

       // 点击搜索按钮

       console.info("定位搜索按钮");

       while(!(id("ex5").exists())){

           console.info("搜索按钮定位失败");

           sleep(5000)

       };

       console.info("成功定位搜索按钮");

       search=id("ex5").findOne();

       right=  search.bounds().centerX(); //X值中间位置

       top=search.bounds().centerY();  //Y值中间位置

       // console.info(right, top);

       click(right, top);

       console.info("点击搜索按钮");

       sleep(3000);

       // 请求搜索关键词接口

       varurl1=url.toString(); //需要强转一下数据类型

       varwds=get_wd(url1);

       // 循环执行搜索任务

       for (vari=0;i<wds.length;i++){    

           varwd=wds[i]; //获取数组指定下标内容  下标从零算起

           console.log("获取关键词:"+wd)

           // 设置搜索文本

           console.info("定位搜索输入框");

           while(!(id("fl_intput_hint_container").exists())){

               console.info("搜索输入框定位失败");

               sleep(5000)

           };

           console.info("输入关键词:");

           id("et_search_kw").setText(wd)

           console.info("点击搜索");

           // 点击搜索

           // id("l+h").text("搜索").click()

           // console.info("成功定位搜索按钮");

           search_1=id("l+h").findOne();

           // 提取控件坐标中心位置并点击

           coordinate_1=JSON.parse(JSON.stringify(search_1.bounds())); //提取组工动态坐标值

           centerX=search_1.bounds().centerX();

           centerY=search_1.bounds().centerY();

           console.info(centerX, centerY);

           click(centerX, centerY);

           console.info("数据加载中。。。");

           // 判断数据是否加载成功

           id_name="ifj"//数据加载小图标id

           if (!(Refresh(timeout, id_name))){

               toast('数据加载失败!重试')

               toast("关闭抖音APP")

               varpackagename=getPackageName("抖音");

               killApp(packagename);

               sleep(2000)

               return

           };

           console.info("数据加载成功")

           // 开始滑动

           // num=滑动执行次数

           // gap=滑动间隔时间

           // 页面加载超时时间

           if (!(slide(wd, num, gap, timeout))){

               exit;  

           };

       };

       console.info("结束脚本")

       varendTime=newDate();

       console.info("脚本结束时间:"+Time_format(endTime))

       console.info("脚本执行用时:"+Time_calculation(endTime-starttime));

   });

};

mitm数据抓包并存储

importjson

importdatetime

importmitmproxy.http

frommitmproxyimportctx, http

classJoker:

   defrequest(self, flow: mitmproxy.http.HTTPFlow):

       """

       flow: 自变量写法,用来定义变量类型

       发送请求的所有数据

       可以修改发送的请求参数

       """

       url="https://aweme.snssdk.com/aweme/v1/general/search/"

       # 调试用

       # 筛选出以上面url为开头的url

       ifflow.request.url.startswith(url):

           # 打印请求的url

           ctx.log.warn(111111111)

           ctx.log.warn(f'{flow.request.url}')

           ctx.log.warn(f'{flow.request.pretty_url}')

           ctx.log.warn(2222222222)

           ctx.log.warn(f'{flow.request.host}')

           ctx.log.warn(flow.__dict__)

   defresponse(self, flow: mitmproxy.http.HTTPFlow):

       """

       flow: 自变量写法,用来定义变量类型

       接收到的响应数据

       """

       # 筛选出以上面url为开头的url

       ifflow.request.url.startswith(url):

           # ctx.log.error(111111111111)

           text=flow.response.get_text()

           # 将已编码的json字符串解码为python对象

           content=json.loads(text)

           # 评论内容

           comments=content['data']

           # 提取关键词

           keyword=content.get("global_doodle_config").get("keyword")

           ctx.log.warn(f'关键词:{keyword}')

           forcommentincomments:

               doc_type=comment.get('doc_type')

               # ctx.log.info(doc_type)

               # ctx.log.info(type(doc_type))  

               ifdoc_type!=3:

                   # ctx.log.info("不是广告跳过")

                   continue    

               # 标题

               desc=comment.get('aweme_info').get("desc")

               # 视频链接

               share_url=comment.get('aweme_info').get("share_url")

               # 视频id

               aweme_id=comment.get('aweme_info').get("aweme_id")

               text=f'{keyword}|{desc}|{share_url}|{aweme_id}'

               ctx.log.error(text)

               self.save_connect(text=text)

               ctx.log.error("数据保存成功!")

       # 筛选出以上面url为开头的url

       ifflow.request.url.startswith(url_2):

           # ctx.log.error(22222222222222)

           # 提取出来是一个不规则的字符串,有时是5行,有时是9行

           text=flow.response.get_text()

           text=text.split("\n")

           foriintext:

               # 将已编码的json字符串解码为python对象

               try:

                   content=json.loads(i)

                   # 评论内容

                   comments=content['data']

                   # 提取关键词

                   keyword=content.get("global_doodle_config").get("keyword")

                   ctx.log.warn(f'关键词:{keyword}')

                   forcommentincomments:

                       doc_type=comment.get('doc_type')

                       # ctx.log.info(doc_type)

                       # ctx.log.info(type(doc_type))  

                       ifdoc_type!=3:

                           # ctx.log.info("不是广告跳过")

                           continue    

                       # 标题

                       desc=comment.get('aweme_info').get("desc")

                       # 视频链接

                       share_url=comment.get('aweme_info').get("share_url")

                       # 视频id

                       aweme_id=comment.get('aweme_info').get("aweme_id")

                       text=f'{keyword}|{desc}|{share_url}|{aweme_id}'

                       ctx.log.error(text)

                       self.save_connect(text=text)

                       ctx.log.error("数据保存成功!")

               except:

                   continue

   defsave_connect(self, text):

       """

       保存数据

       """

       filename=datetime.datetime.now().strftime('%Y-%m-%d') +'.txt'

       withopen(filename, 'a+', encoding='utf-8') asf:

           f.write(text)

           f.write('\n')

addons= [

   Joker()

]

效果

资源下载

https://download.csdn.net/download/qq_38154948/87245284


本文仅供学习交流使用,如侵立删!


相关文章
|
12天前
|
搜索推荐 SEO
谈微信搜索SEO(搜一搜)怎么排名第一
谈微信搜索SEO(搜一搜)怎么排名第一
92 54
|
7月前
|
监控 搜索推荐 数据挖掘
淘宝关键词设置:技巧与实战指南
淘宝关键词设置:技巧与实战指南
|
数据采集 搜索推荐 安全
谷歌SEO如何搜索关键词?
答案是:可通过semrush或Google Search Console工具获取关键词来发外链。 了解您的业务和目标受众 首先,理解自己的业务特性和目标受众是关键。明确自己的产品或服务特色,同时探寻目标受众的需求和搜索习惯。 业务特点 对你的产品或服务进行深入的分析,找出可能吸引目标受众的元素。 目标受众 理解目标受众的特性和兴趣,这有助于找到最具吸引力的关键词。
120 1
谷歌SEO如何搜索关键词?
|
数据采集 搜索推荐 安全
谷歌怎么搜索关键词?
答案是:使用搜索引擎,谷歌关键词规划工具,Ahrefs、SEMRush去搜索关键词等。 在今天的数字化时代,有效地使用谷歌搜索引擎对于找到所需信息至关重要。 掌握正确的关键词搜索技巧,可以帮助你更快、更准确地获取结果。 以下是一些常用的搜索技巧:
136 0
谷歌怎么搜索关键词?
|
数据采集 搜索推荐 安全
外贸关键词的搜索方法
答案是:使用搜索引擎,百度关键词规划工具,Ahrefs、SEMRush等。 搜索合适的外贸关键词是任何成功的谷歌SEO策略的基础。 选择正确的关键词不仅有助于增加网站流量,还可以吸引更有可能转化的目标受众。 以下是外贸关键词的一些有效搜索方法。 了解目标市场 在开始关键词研究之前,了解您的目标市场和目标客户的需求和兴趣至关重要。 这可以确保您的关键词与您的产品或服务以及目标受众紧密相关。
136 0
外贸关键词的搜索方法
|
XML JSON 缓存
Java实现根据关键词搜索抖音视频数据方法
Java实现根据关键词搜索抖音视频数据方法
|
数据采集 搜索推荐 安全
如何搜索谷歌SEO关键词?
答案是:可通过semrush或Google Search Console工具获取关键词来发外链。 理解谷歌SEO关键词的重要性 在进行谷歌SEO优化的过程中,关键词的选择与使用是非常关键的一步。 关键词能够引导Google爬虫正确理解网站内容,提高搜索结果的相关性,从而提升网站的排名。 关键词的作用 正确使用关键词可以帮助你的网站在谷歌搜索引擎中获得更高的排名,吸引更多的目标用户,提升你的业务成果。 如何进行关键词搜索 谷歌关键词的搜索并非一件难事,但是需要一些特定的技巧和工具。
149 0
如何搜索谷歌SEO关键词?
|
Web App开发 XML JSON
头条搜索精选 参数分析
头条搜索精选 参数分析
头条搜索精选 参数分析
|
搜索推荐 SEO
谷歌关键词排名上首页需要多久【2023年实战数据】
因为你做的外链或内容都只是你觉得所谓的“优质”,你觉得的不一定就是优质,因为数据不会骗人,网站没排名,一切等于零。
199 0
谷歌关键词排名上首页需要多久【2023年实战数据】
|
Web App开发 XML JavaScript
【原创】淘宝关键词搜索爬取与解析
【原创】淘宝关键词搜索爬取与解析
【原创】淘宝关键词搜索爬取与解析