중요한
이 프로젝트는 보관되어 더 이상 유지관리되지 않습니다.
Google Play 스토어에서 Android 애플리케이션을 직접 다운로드하기 위한 명령줄 도구입니다.
PlaystoreDownloader 는 Google Play 스토어에서 직접 Android 애플리케이션을 다운로드하기 위한 도구입니다. 초기(일회성) 구성 후 패키지 이름을 지정하여 애플리케이션을 다운로드할 수 있습니다.
이 프로젝트는 학습 목적으로만 제작되었으며 어떤 방식으로도 Google과 관련이 없습니다 .
명령줄 인터페이스 |
---|
웹 인터페이스 |
---|
자신의 컴퓨터에서 PlaystoreDownloader의 작업 복사본을 얻는 방법에는 Docker를 사용하거나 Python 3
환경에서 소스 코드를 직접 사용하는 두 가지 방법이 있습니다. 두 경우 모두 가장 먼저 해야 할 일은 이 저장소의 로컬 복사본을 얻는 것입니다. 따라서 프로젝트를 저장하려는 디렉터리에서 터미널을 열고 저장소를 복제합니다.
$ git clone https://github.com/ClaudiuGeorgiu/PlaystoreDownloader.git
유일한 요구 사항은 최신 버전의 Docker를 설치하는 것이므로 PlaystoreDownloader를 설치하는 데 권장되는 방법입니다.
$ docker --version
Docker version 20.10.7, build f0df350
공식 PlaystoreDownloader Docker 이미지는 Docker Hub에서 사용할 수 있습니다(이 저장소에서 자동으로 빌드됨).
$ # Download the Docker image.
$ docker pull claudiugeorgiu/playstore-downloader
$ # Give it a shorter name.
$ docker tag claudiugeorgiu/playstore-downloader downloader
Docker Hub에서 공식 이미지를 다운로드했다면 도구를 사용할 준비가 된 것이므로 사용 지침을 확인하세요. 그렇지 않으면 이전에 생성된 PlaystoreDownloader/
디렉터리( Dockerfile
이 포함된 폴더)에서 다음 명령을 실행하여 도커 이미지:
$ # Make sure to run the command in PlaystoreDownloader/ directory.
$ # It will take some time to download and install all the dependencies.
$ docker build -t downloader .
Docker 이미지가 준비되면 빠른 테스트를 통해 모든 것이 올바르게 설치되었는지 확인하세요.
$ docker run --rm -it downloader --help
usage: python3 -m playstoredownloader.cli [-h] [-b] [-s] [-c FILE] [-o DIR] [-t TAG] package [package ...]
...
이제 PlaystoreDownloader를 사용할 준비가 되었습니다. 자세한 내용은 사용 지침을 참조하세요.
유효한 Google Play 스토어 자격 증명 외에도 이 프로젝트의 유일한 요구 사항은 작동하는 Python 3
(최소 3.7
) 설치 및 pipenv
(종속성 관리용)입니다.
프로젝트의 기본 디렉터리( PlaystoreDownloader/
)에서 다음 명령을 실행하여 필요한 종속성을 설치합니다.
$ # Make sure to run the commands in PlaystoreDownloader/ directory.
$ # This project uses pipenv (https://github.com/pypa/pipenv) for dependency management.
$ # It can be installed with the following command:
$ # python3 -m pip install pipenv
$ # Install PlaystoreDownloader's requirements (a virtual environment will be created).
$ pipenv install --deploy
모든 항목을 설치한 후 모든 항목이 올바르게 작동하는지 빠르게 테스트해 보세요.
$ pipenv run python3 -m playstoredownloader.cli --help
usage: python3 -m playstoredownloader.cli [-h] [-b] [-s] [-c FILE] [-o DIR] [-t TAG] package [package ...]
...
이제 PlaystoreDownloader를 사용할 준비가 되었습니다. 자세한 내용은 사용 지침을 참조하세요.
Google Play 스토어와 상호작용하기 전에 유효한 자격 증명과 계정에 연결된 ANDROID ID를 제공해야 합니다. 이 도구를 사용하기 전에 자격 증명.json 파일을 수정하고 필요한 정보를 삽입하십시오. 변경 후 이 파일을 커밋하기 전에 다시 한 번 생각하십시오. 그렇지 않으면 자격 증명이 유출될 수 있습니다.
credential.json 파일의 USERNAME
및 PASSWORD
필드에 Google 이메일과 비밀번호를 입력하세요. 이 정보는 Google 서버에 인증하는 데 필요합니다. 2단계 인증이 활성화된 경우 PASSWORD
필드에 앱 비밀번호를 생성해야 합니다.
Android 기기(실제 또는 에뮬레이션)에서 위의 자격 증명을 사용하고 기기의 공식 Google Play 스토어를 사용하여 하나 이상의 애플리케이션을 다운로드하세요. 이 단계는 기기의 ANDROID ID를 계정에 연결하여 마치 기기를 직접 사용하는 것처럼 애플리케이션을 다운로드할 수 있도록 하기 위해 필요합니다. 기기에서 계정을 삭제하지 마세요. 그렇지 않으면 해당 ANDROID ID가 더 이상 유효하지 않게 됩니다.
장치의 ANDROID ID를 가져오고 자격 증명.json 파일의 ANDROID_ID
필드를 채웁니다. 기기에 기기 ID 애플리케이션을 설치한 후 Google Service Framework (GSF)
에 해당하는 문자열을 복사하여 ANDROID ID를 얻을 수 있습니다(애플리케이션에서 제공하는 Android Device ID
대신 이 문자열을 사용하세요).
위 단계 이후 인증 관련 오류가 발생하는 경우, 다음 조치를 고려해보세요. (애플리케이션 다운로드에 사용한 계정으로 로그인한 상태에서 링크를 방문하세요.)
보안 수준이 낮은 앱이 계정에 액세스하도록 허용합니다(https://myaccount.google.com/lesssecureapps).
일시적으로 계정에 대한 액세스를 잠금 해제합니다(https://accounts.google.com/DisplayUnlockCaptcha).
앞서 언급한 ANDROID ID 에 해당하는 기기와 호환되는 애플리케이션만 다운로드할 수 있으며 추가 제한사항은 다운로드할 수 있는 총 애플리케이션 수에 영향을 미칠 수 있습니다 .
구성에 설명된 대로 Google Play 스토어 자격 증명을 구성한 후에는 사용할 수 있는 유효한 credentials.json
파일이 있어야 합니다. 사용 지침은 도구를 설치한 방법에 따라 다릅니다.
자격 증명이 포함된 파일은 Docker 이미지에 포함되어 있지 않으므로 컨테이너에 탑재해야 합니다. 다운로드 디렉토리도 마운트해야 합니다. 그렇지 않으면 다운로드한 애플리케이션이 호스트 시스템에 액세스할 수 없습니다. 현재 디렉터리( ${PWD}
)에 credentials.json
파일과 output/
폴더가 포함되어 있는 경우 패키지 이름이 com.application.example
인 애플리케이션을 다운로드하는 명령은 다음과 같습니다.
$ docker run
-u $( id -u ) : $( id -g )
-v " ${PWD} /credentials.json " : " /app/credentials.json "
-v " ${PWD} /output/ " : " /app/Downloads/ "
--rm -it downloader " com.application.example "
다운로드가 성공하면 결과 .apk
파일이 명령이 실행된 디렉터리에 포함된 output/
폴더에 저장됩니다( $ docker run --rm -it downloader --help
입력하거나 사용 가능한 매개변수에서 자세한 내용을 확인하세요). ).
간단한 웹 인터페이스도 사용할 수 있습니다.
$ docker run
-u $( id -u ) : $( id -g )
-v " ${PWD} /credentials.json " : " /app/credentials.json "
-v " ${PWD} /output/ " : " /app/Downloads/ "
-p 5000:5000
--entrypoint=python3
--rm -it downloader flask_app.py
$ # Navigate to http://localhost:5000/ to use the web interface.
프로젝트의 기본 디렉터리( PlaystoreDownloader/
)에서 다운로드할 앱의 패키지 이름을 사용하여 다음 명령을 호출합니다.
$ pipenv run python3 -m playstoredownloader.cli " com.application.example "
다운로드가 성공하면 기본적으로 결과 .apk
파일이 PlaystoreDownloader/Downloads/
디렉터리에 저장됩니다. 추가 -o "path/to/download/folder/"
인수를 제공하여 다운로드 디렉터리의 위치를 변경할 수 있습니다(자세한 내용은 $ pipenv run python3 -m playstoredownloader.cli --help
입력하거나 사용 가능한 매개변수를 확인하세요).
간단한 웹 인터페이스도 사용할 수 있습니다.
$ pipenv run python3 flask_app.py
$ # Navigate to http://localhost:5000/ to use the web interface.
모든 매개변수는 도움말 메시지에 설명되어 있습니다.
$ # With Docker.
$ docker run --rm -it downloader --help
$ # With source.
$ pipenv run python3 -m playstoredownloader.cli --help
usage: python3 -m playstoredownloader.cli [-h] [-b] [-s] [-c FILE] [-o DIR] [-t TAG] package [package ...]
...
유일한 필수 매개변수는 Google Play 스토어에 표시되는 다운로드할 애플리케이션의 package
이름입니다(예: com.spotify.music
또는 com.whatsapp
). 다른 선택적 인수는 다음과 같습니다.
-b
애플리케이션(있는 경우)과 함께 추가 .obb
파일을 다운로드하기 위한 플래그입니다. 자세한 내용은 확장 파일을 참조하세요. 추가 파일은 다운로드한 애플리케이션과 동일한 디렉터리에 저장됩니다. 참고: 새 앱에서는 확장 파일이 더 이상 지원되지 않습니다 .
-s
는 애플리케이션(있는 경우)과 함께 추가 분할 .apk
파일을 다운로드하기 위한 플래그입니다. 자세한 내용은 동적 전달을 참조하세요. 추가 파일은 다운로드한 애플리케이션과 동일한 디렉터리에 저장됩니다.
-c CREDENTIALS
는 Google Play 스토어 자격 증명이 포함된 JSON 구성 파일의 경로를 설정하는 데 사용됩니다. 지정하지 않으면 기본적으로 도구는 명령이 실행되는 디렉터리에 있는 credentials.json
이라는 파일을 사용하려고 시도합니다.
-o DIR
다운로드한 .apk
파일을 저장할 디렉터리의 경로(상대 또는 절대)를 설정하는 데 사용됩니다(예: -o /home/user/Desktop/
). 경로에 누락된 디렉터리가 포함되어 있으면 해당 디렉터리가 자동으로 생성됩니다. 지정하지 않으면 기본적으로 파일은 도구가 실행되는 위치에 생성된 Downloads/
디렉터리에 저장됩니다.
-t TAG
사용하면 파일 이름 앞에 추가될 태그를 설정할 수 있습니다. 예를 들어 -t "LABEL"
사용하면 다운로드한 애플리케이션의 최종 이름은 [LABEL] filename.apk
와 같습니다. 참고: 태그는 기본 애플리케이션과 추가 파일(있는 경우)에 적용됩니다.
현재 위 인수를 사용하여 명령줄 인터페이스만 구성할 수 있으며, 웹 인터페이스는 패키지 이름만 요청하고 다른 모든 매개변수에는 기본값을 사용합니다 .
MIT 라이선스에 따라 이 코드를 자유롭게 사용할 수 있습니다.