link url下载php,php脚本生成google play url的下载链接,下载apk并自动反编译后获取android版本号...

php脚本生成google play url的下载链接,下载apk并自动反编译后获取android版本号

需求:

get the offer tracking link

follow the redirect to get google play url

Go to http://apps.evozi.com/apk-downloader/

Enter google play url

Download APK file

Decompile APK file using https://code.google.com/p/android-apktool/wiki/ApktoolOptions#Decompile_Options

Extract this file

[app name]/smali/com/kochava/android/tracker/Global.smali

Extract this line

.field public static final SDK_VERSION:Ljava/lang/String; = “Android20141023”

This output the Kochava SDK version numbe

脚本的目的就是将上面的操作步骤自动化

运行脚本之前必须在linux里安装apktool和java环境

操作演示:

20200625000644-5ef3ea943d083.png

上面输入的是应用的包名字,你也可以输入对应的google play url:     https://play.google.com/store/apps/details?hl=en&id=com.priceline.android.negotiator

以下是代码:

1 <?php2 fwrite(STDOUT, "please enter the google play url or app package name: ");3 $url = trim(fgets(STDIN));4 $name_reg="/id=([^&]+)/";5 preg_match($name_reg,$url,$name);6 if(empty($name)){7 $packagename=$url;8 }else{9 $packagename=$name[1];10 }11 functiongetParameter(){12 $url="http://apps.evozi.com/apk-downloader";13 $context=file_get_contents($url);14 preg_match("/var evoziJsData = {(.+)};/",$context,$json);15 $t=explode(",",$json[1]);16 foreach($t as $key=>$value){17 $value=str_replace(' ','',$value);18 $t[$key]=$value;19 }20 $token_value=explode(":",$t[1]);21 $t_value=$token_value[1];22 $dtrken=explode(":",$t[2]);23 $patten="/var ".$dtrken[1]." = '(.+)';/";24 preg_match($patten,$context,$daw);25 $dtrken[1]=$daw[1];26 return array("t"=>$t_value,"dtrken"=>$dtrken);27 }28 function ajaxPost($packagename) {29 $tk=getParameter();30 $t=$tk['t'];31 $dtrken_key=$tk['dtrken'][0];32 $dtrken_value=$tk['dtrken'][1];33 $post_url='http://api.evozi.com/apk-downloader/download';34 $data = 'packagename='.$packagename.'&t='.$t.'&'.$dtrken_key.'='.$dtrken_value.'&fetch=false';35 $ch =curl_init();36 $headers = array('content-type: application/x-www-form-urlencoded;charset=UTF-8');37 curl_setopt($ch, CURLOPT_URL, $post_url);38 curl_setopt($ch, CURLOPT_POSTFIELDS, $data);39 curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);40 curl_setopt($ch, CURLOPT_POST, 1);41 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);42 $results = curl_exec($ch);43 curl_close($ch);44 $results = json_decode($results);45 return $results;46 }47 function getVersion($packagename){48 $version="/Android[0-9]+/";49 $path=$packagename."/smali/com/kochava/android/tracker";50 $filename1="Global.smali";51 $filename2="a.smali";52 if(is_dir($path)){53 $file=scandir($path);54 foreach($file as $key=>$value){55 $filename=$value;56 if(isset($filename)&file_exists($path."/".$filename)){57 $context=file_get_contents($path."/".$filename);58 preg_match($version,$context,$v);59 if(!empty($v)){60 $vs=$v[0];61 break;62 }63 }64 }65 if(isset($vs)){66 $info=array("status"=>200,"description"=>"success detection in the file:".$filename,"version"=>$vs);67 }else{68 $info=array("status"=>203,"description"=>"failure detection in all the .smal file:(".$file."),we can't find the android version number");69 }70 }else{71 $info=array("status"=>201,"description"=>"there is no such directory:".$path);72 }73 $info=json_encode($info);74 return $info;75 }76 function getFile($file_path,$file_name){77 exec("sudo wget -O $file_name $file_path");78 }79 function deCompileApk($file_name){80 print_r("++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++start decompile apk,this may need a long time,please wait...++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++".PHP_EOL);81 exec("sudo apktool d $file_name");82 print_r("++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++decompile end++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++".PHP_EOL);83 }84 function delFile($packagename,$file_name){85 exec("sudo rm -f $file_name");86 exec("sudo rm -rf $packagename");87 }88 $result=ajaxPost($packagename);89 if($result->status=="success"){90 $file_name=$packagename."."."apk";91 $downloadUrl=$result->url;92 $downloadUrl=preg_replace("/&/i", "\&", $downloadUrl);93 getFile($downloadUrl,$file_name);94 deCompileApk($file_name);95 $info=getVersion($packagename);96 delFile($packagename,$file_name);97 }else{98 $tinfo=array("status"=>204,"description"=>"we can't generate Download Link from http://apps.evozi.com/apk-downloader/,please check your input of google play url or app package name!");99 $info=json_encode($tinfo);100 }101 print_r($info.PHP_EOL);102 ?>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/563601.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java中.of,java中instanceof的用法

java 中的instanceof 是一个二元操作符(运算符)运算符&#xff0c;由于是字母组成&#xff0c;所以是Java的保留关键字&#xff0c;它的作用是用来判断&#xff0c;instanceof 左边对象是否为instanceof 右边类的实例&#xff0c;返回一个boolean类型值。还可以用来判断子父类的…

java实现鸭子类型,Golang的interface及duck typing鸭子类型

Golang的interface及duck typing鸭子类型“当看到一只鸟走起来像鸭子、游泳起来像鸭子、叫起来也像鸭子&#xff0c;那么这只鸟就可以被称为鸭子。” 意思就是: 一个东西究竟是不是鸭子&#xff0c;取决于它能不能满足鸭子的工作。duck typing 多见于动态语言,例如PHP,Python等…

小猴吃桃matlab,看图写话:小猴吃桃精彩选篇

看图写话&#xff1a;小猴吃桃精彩选篇两只聪明的小猴子一天上午&#xff0c;风和日丽。佳佳和皮皮到小溪边玩耍&#xff0c;忽然皮皮开心的大叫&#xff1a;“快看那边有好多又大又红的桃子&#xff01;”这时佳佳也高兴的欢呼着&#xff0c;馋的它们开水直流。皮皮和佳佳都在…

php mysql 分行执行,php执行mysql存储及执行脚本

php执行mysql存储及执行脚本php页面执行mysql存储过程:# vi cunchu.php$db new mysqli("localhost","root","123456","team1");$result$db->query("CALL challenge_crontab()");?>:wq注释&#xff1a;执行team1数据…

oracle 换字段顺序,修改ORACLE的字段顺序

首先你要有一个pl/sql&#xff0c;其实没有也行&#xff0c;但是这数据库还是有一个可视化界面为好啊。1.首先&#xff0c;以sys用户的身份登录PL/SQL2.查询出你要更改的表的ID&#xff0c;以我本地的数据为例&#xff0c;我要改‘FINACE‘用户下‘INCOME‘这张表。注&#xff…

oracle单行子查询返回多个行 order by,单行子查询返回多个行 Issue分析求助

with order_base as --获取订单基础情况(select ou.order_key order_key, ou.order_quantity_i, ood.dispatch_time_t, ou.part_number_s, I032ZZ01 pline_name_sfrom order_uv ou left join at_as_om_orderdispatchstatus ood on ou.order_key ood.order_54union allselect m…

php按照名称搜索,PHP从类型和名称搜索

很抱歉,标题不好,但我不知道有更好的选择.目前,我正在创建一个搜索引擎以获取产品详细信息.我有2种搜索类型,第一种是使用产品类型进行搜索,另一种是使用产品名称进行搜索.这是搜索代码&#xff1a;$search_exploded explode (" ", $search);$x "";$cons…

srvctl 在oracle下运行,在RAC 中解决 vipca 和 srvctl 无法执行的错误

问题一: vip创建问题/home/oracle/crs/oracle/product/10/crs/jdk/jre//bin/java: error while loading shared libraries: libpthread.so.0: cannot open shared object file解决方法&#xff1a;这个错误一般是在 5上装 时会碰到的&#xff0c;当界面提示你用root脚本执行相应…

简述oracle数据库特殊状态,【OracleDB】 01 概述和基本操作

实例概念&#xff1a;Oracle有一个特殊的概念Oracle数据库 数据库 Oracle文件系统 Oracle实例实例处理Oracle的请求&#xff0c;调用文件系统然后返回结果响应给客户端单实例和多实例一个数据库可以对应多个实例操作数据库服务这是Oracle数据库的服务&#xff0c;一定要安装…

oracle会闪,oracle闪来

当前位置:我的异常网 数据库 oracle闪来oracle闪来www.myexceptions.net 网友分享于&#xff1a;2013-09-10 浏览&#xff1a;1次oracle闪回闲来无事&#xff0c;把以前的笔记整理一下放到这里。默认情况下&#xff0c;oracle10g可以直接闪回表&#xff0c;闪回表数据&#…

oracle导出有分区表的用户,分区表导出导入

--创建分区表create table t2(id int,name varchar2(10))partition by range(id)(partition p1 values less than(10),partition p2 values less than(20),partition p3 values less than(30),partition p4 values less than(40),partition p5 values less than(50))--插入数据…

php分流短信服务商,使用第三方短信服务商云片发送短信(php样例)

//智能匹配模版接口发送样例$apikey "---------------------------"; //请用自己的apikey代替$mobile "--------------"; //请用自己的手机号代替$text"【云片网】亲爱的doubiyuzai&#xff0c;您的验证码是------。有效期为100000000小时&#xff…

oracle中affirm,2.Oracle Data Guard 参数介绍

Oracle Data Guard 参数介绍Data Guard作为Oracle提供的一个高可用及灾备解决方案,理解并可以实施它对于DBA来说是非常重要套的技能上节介绍了有关Data Guard的概念&#xff0c;这节将介绍相关的一些参数有的参数是做为备库角色时才生效的&#xff0c;会单独说出来1. DB_NAME该…

linux lib目录找不到,linux中jpeglib库文件我安装了,但是我运行自己写的代码总是找不到这个库...

首先&#xff0c;找到你的VC6.0的安装路径(就是你安装到哪里了&#xff0c;不是你安装包setup.exe的路径)&#xff0c;假设按照默认路径安装的话&#xff0c;头文件和库文件的路径应该是这样子的&#xff1a;include files:C:\Program Files\Microsoft Visual Studio\VC98\INCL…

连接linux桌面命令,连接Linux远程桌面的四个方法

有下面四种方法&#xff1a;一、通过xshell直接调用程序窗口。二、通过xbrower连接Linux完整的桌面。三、通过Linux连接Linux的远程桌面&#xff0c;可完整桌面&#xff0c;也可打开程序窗口。四、通过VNC连接桌面。一、安装xmanager&#xff0c;用xshell连接到Linux服务器&…

linux基础磁盘管理,Linux基础入门-文件系统操作与磁盘管理

chrome 更新flash插件下载下面的插件并安装 https://fpdownload.macromedia.com/pub/labs/flashruntimes/flashplayer/install_flash_player ...sort DEMO测试用文件: [weblogicetp-mall-dev7][/tmp]$ cat msn.txt aaa, fff, bbb, cc, ee, gg, hh, zz, mmm, DEMO1:按第一 ...Qt…

linux mysql 性能提高,高手心得:提高MySQL性能的方法

lgms2008 于 2006-09-20 00:18:05发表:5. NOT我们在查询时经常在where子句使用一些逻辑表达式&#xff0c;如大于、小于、等于以及不等于等等&#xff0c;也可以使用and(与)、or(或)以及not(非)。NOT可用来对任何逻辑运算符号取反。下面是一个NOT子句的例子&#xff1a;... whe…

Linux单独编译设备树,迅为IMX6Q开发板-非设备树内核-单独编译内核驱动

内核驱动不仅可以将驱动编译到内核中&#xff0c;还可以动态的编译内核驱动。本文档介绍如何以模块的方式编译内核驱动。要动态的编译内核&#xff0c;首先需要将内核源码编译通过&#xff0c;内核的编译请参考使用手册第五章。9.5.2.1 内核和编译器路径本节介绍内核路径、编译…

linux+top+常用参数,linux的top命令参数详细说明

Linux中的top命令是个常用的命令之一&#xff0c;下面由学习啦小编为大家整理了Linux的top命令参数详细说明&#xff0c;希望对大家有帮助!linux的top命令简介top命令是Linux下常用的性能分析工具&#xff0c;能够实时显示系统中各个进程的资源占用状况&#xff0c;类似于Windo…

linux中常用名词解释,科学网—linux中常见名词解释 - 武海丹的博文

Shell&#xff1a;是系统的用户界面&#xff0c;提供了用户与内核进行交互操作的一种接口。它接收用户输入的命令并把它送入内核去执行。实际上Shell是一个命令解释器&#xff0c;它解释由用户输入的命令并且把它们送到内核。(当用户发出指令&#xff0c;其实先将这些指令发送给…