以编程方式从谷歌播放下载应用程序

2022-09-04 23:32:38

我需要从谷歌播放下载一些应用程序进行分析。但我不想手动执行此操作(我必须经常这样做,并且每次我想下载的应用程序都会更改!

所以,问题是,我是否可以编写一个程序来下载应用程序。如果可能的话,如何做到?

我已经看到了这个chrome插件:http://codekiem.com/2012/02/24/apk-downloader/ 但我不能信任作者(该应用程序需要谷歌用户和通行证以及设备ID),并决定实现我自己的程序。


答案 1

对于那些正在寻找Java实现的人来说,这里是:

顶级步骤:

  1. 从手机收集 gmail ID、密码、安卓 ID 和安全令牌
  2. 下载由Akdeniz实现的爬虫的jar文件
  3. 从Akdeniz下载googleplay.java(cli)的源文件
  4. 修改谷歌播放.java
  5. 把它们放在一起:D

详细步骤:

  1. Gmail ID和密码是显而易见的!对于Android ID,请遵循demirozali并使用“getAndroidID”功能。我无法使“getAuthToken”工作!因此,我使用有毒的面包店来获得安全令牌。请注意,函数“updateToken”(它实际上为你获取安全令牌)应该在 AsyncTask 中调用,而不是在 UI 线程上调用。

  2. Akdeniz github网站下载“googleplaycrawler-0.1-SNAPSHOT.jar”文件。

  3. 我无法在jar文件中使用“GooglePlayAPI”类。所以我决定改变CLI版本。“googleplaycrawler-0.1-SNAPSHOT.jar”中的 CLI 类称为“googleplay.java”,可以从源文件下载。

  4. 将“googleplay.java”重命名为“Changed_googleplay.java”并对其进行修改。这样,方法“searchCommand()”返回一个数组字符串列表,而不是在控制台上打印结果。

  5. 完成上述所有步骤后,在jetBrains中创建一个项目,或者...并添加“googleplaycrawler-0.1-SNAPSHOT.jar”作为库。另外,将“Changed_googleplay.java”添加到您的src目录中。最后,在应用程序中使用以下方法。可以使用以下类搜索查询,然后下载与该查询对应的所有免费应用。

    public void SearchAndDownload() {
        String login = "xxxx@gmail.com";
        String password = "xxxx";
        String androidId = "xxxx";
        String securitytoken = "xxxx";
        String command = "search";
        String query = "Maps";
        String offest = "0";
        String number = "5";
    
        Changed_googleplay gp = new Changed_googleplay();
        ArrayList<String> res = gp.operate(new String[]{"-i", androidId, "-e", login, "-p", password, "-t", securitytoken, command, "-o", offest, "-n", number, query});
    
        res.remove(0);
        if (command.equals("search")) {
            System.out.println("Title"+"\t"+"Package Name"+"\t"+"Price"+"\t"+"Number of Downloads");
            for (String line : res){
                String[] split = line.split(Changed_googleplay.DELIMETER);
                String name = split[0];
                String packageName = split[1];
                String creator = split[2];
                String price = split[3];
                String size = split[4];
                String dlNO = split[5];
                if(price.equals("Free")){
                    System.out.println(name+"\t"+packageName+"\t"+price+"\t"+dlNO);
                    gp.operate(new String[]{"-i", androidId, "-e", login, "-p", password, "-t", securitytoken, "download", packageName});
                }
            }
        }
    }
    

您可能希望查看爬网程序项目主页中的命令行选项列表。

玩得愉快!


答案 2