สำคัญ
โปรเจ็กต์นี้ถูกเก็บถาวรและไม่มีการดูแลรักษาอีกต่อไป
เครื่องมือบรรทัดคำสั่งเพื่อดาวน์โหลดแอปพลิเคชัน Android โดยตรงจาก Google Play Store
PlaystoreDownloader เป็นเครื่องมือสำหรับดาวน์โหลดแอปพลิเคชัน Android โดยตรงจาก Google Play Store หลังจากการกำหนดค่าเริ่มต้น (ครั้งเดียว) คุณจะสามารถดาวน์โหลดแอปพลิเคชันได้โดยการระบุชื่อแพ็คเกจ
โครงการนี้มีวัตถุประสงค์เพื่อการเรียนรู้เท่านั้น และไม่มีส่วนเกี่ยวข้องกับ Google แต่อย่างใด
อินเทอร์เฟซบรรทัดคำสั่ง |
---|
เว็บอินเตอร์เฟส |
---|
มีสองวิธีในการรับสำเนา PlaystoreDownloader บนคอมพิวเตอร์ของคุณเอง: โดยใช้ Docker หรือโดยใช้ซอร์สโค้ดโดยตรงในสภาพแวดล้อม Python 3
ในทั้งสองกรณี สิ่งแรกที่ต้องทำคือรับสำเนาของพื้นที่เก็บข้อมูลนี้ในเครื่อง ดังนั้นให้เปิดเทอร์มินัลในไดเร็กทอรีที่คุณต้องการบันทึกโปรเจ็กต์และโคลนพื้นที่เก็บข้อมูล:
$ git clone https://github.com/ClaudiuGeorgiu/PlaystoreDownloader.git
นี่เป็นวิธีที่แนะนำในการติดตั้ง PlaystoreDownloader เนื่องจากข้อกำหนดเพียงอย่างเดียวคือต้องติดตั้ง Docker เวอร์ชันล่าสุด:
$ 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 Store ที่ถูกต้องแล้ว ข้อกำหนดเพียงอย่างเดียวของโปรเจ็กต์นี้คือการติดตั้ง 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 Store คุณต้องให้ข้อมูลประจำตัวที่ถูกต้องและ รหัส ANDROID ที่เชื่อมโยงกับบัญชีของคุณ โปรดแก้ไขไฟล์ credentials.json และป้อนข้อมูลที่จำเป็นก่อนที่จะพยายามใช้เครื่องมือนี้ (และคิดให้รอบคอบก่อนที่จะยอมรับไฟล์นี้หลังการเปลี่ยนแปลง ไม่เช่นนั้นข้อมูลประจำตัวของคุณอาจทำให้รั่วไหล):
ป้อนอีเมลและรหัสผ่าน Google ของคุณในช่อง USERNAME
และ PASSWORD
ของไฟล์ credentials.json ข้อมูลนี้จำเป็นในการตรวจสอบสิทธิ์กับเซิร์ฟเวอร์ของ Google ในกรณีที่คุณเปิดใช้งานการยืนยันแบบ 2 ขั้นตอน คุณจะต้องสร้างรหัสผ่านสำหรับแอปสำหรับช่อง PASSWORD
ใช้ข้อมูลรับรองข้างต้นบนอุปกรณ์ Android (จริงหรือจำลอง) และดาวน์โหลดแอปพลิเคชันอย่างน้อยหนึ่งรายการโดยใช้ Google Play Store อย่างเป็นทางการบนอุปกรณ์ ขั้นตอนนี้จำเป็นในการเชื่อมโยง ANDROID ID ของอุปกรณ์กับบัญชีของคุณ เพื่อให้คุณสามารถดาวน์โหลดแอปพลิเคชันได้เหมือนกับว่าคุณใช้อุปกรณ์ของคุณโดยตรง อย่าลบบัญชีออกจากอุปกรณ์ ไม่เช่นนั้น ANDROID ID จะใช้ไม่ได้อีกต่อไป
รับ รหัส ANDROID ของอุปกรณ์และกรอกข้อมูลในช่อง ANDROID_ID
ของไฟล์ credentials.json คุณสามารถรับ ANDROID ID ได้โดยการติดตั้งแอปพลิเคชัน Device ID บนอุปกรณ์ของคุณ จากนั้นคัดลอกสตริงที่สอดคล้องกับ Google Service Framework (GSF)
(ใช้สตริงนี้แทน Android Device ID
ที่แสดงโดยแอปพลิเคชัน)
ในกรณีที่เกิดข้อผิดพลาดที่เกี่ยวข้องกับการรับรองความถูกต้องหลังจากขั้นตอนข้างต้น ให้พิจารณาการดำเนินการต่อไปนี้ (ไปที่ลิงก์ในขณะที่คุณเข้าสู่ระบบด้วยบัญชีที่ใช้ในการดาวน์โหลดแอปพลิเคชัน):
อนุญาตให้แอปที่มีความปลอดภัยน้อยเข้าถึงบัญชีของคุณ (https://myaccount.google.com/lesssecureapps)
ปลดล็อคการเข้าถึงบัญชีของคุณชั่วคราว (https://accounts.google.com/DisplayUnlockCaptcha)
โปรดทราบว่าคุณจะสามารถดาวน์โหลดได้เฉพาะแอปพลิเคชันที่เข้ากันได้กับอุปกรณ์ที่เกี่ยวข้องกับ ANDROID ID ดังกล่าว และข้อจำกัดเพิ่มเติมอาจส่งผลต่อจำนวนแอปพลิเคชันทั้งหมดที่สามารถดาวน์โหลดได้
หลังจากกำหนดค่าข้อมูลรับรอง Google Play Store ตามที่อธิบายไว้ในการกำหนดค่าแล้ว คุณควรมีไฟล์ 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 ...]
...
พารามิเตอร์บังคับเพียงอย่างเดียวคือชื่อ package
ของแอปพลิเคชันที่จะดาวน์โหลด ตามที่ปรากฏใน Google Play Store (เช่น com.spotify.music
หรือ com.whatsapp
) อาร์กิวเมนต์ทางเลือกอื่นๆ มีดังนี้:
-b
คือแฟล็กสำหรับการดาวน์โหลดไฟล์ .obb
เพิ่มเติมพร้อมกับแอปพลิเคชัน (ถ้ามี) ดูไฟล์ส่วนขยายสำหรับข้อมูลเพิ่มเติม ไฟล์เพิ่มเติมจะถูกบันทึกไว้ในไดเร็กทอรีเดียวกันกับแอปพลิเคชันที่ดาวน์โหลด หมายเหตุ: แอปใหม่จะไม่รองรับไฟล์ขยายอีกต่อไป
-s
คือแฟล็กสำหรับการดาวน์โหลดไฟล์ .apk
แยกเพิ่มเติมพร้อมกับแอปพลิเคชัน (ถ้ามี) ดูการจัดส่งแบบไดนามิกสำหรับข้อมูลเพิ่มเติม ไฟล์เพิ่มเติมจะถูกบันทึกไว้ในไดเร็กทอรีเดียวกันกับแอปพลิเคชันที่ดาวน์โหลด
-c CREDENTIALS
ใช้เพื่อกำหนดเส้นทางไปยังไฟล์การกำหนดค่า JSON ที่มีข้อมูลรับรอง Google Play Store หากไม่ได้ระบุ ตามค่าเริ่มต้น เครื่องมือจะพยายามใช้ไฟล์ชื่อ credentials.json
ซึ่งอยู่ในไดเร็กทอรีที่รันคำสั่ง
-o DIR
ใช้เพื่อตั้งค่าพาธ (สัมพันธ์หรือสัมบูรณ์) ของไดเร็กทอรีที่จะบันทึกไฟล์ .apk
ที่ดาวน์โหลดมา (เช่น -o /home/user/Desktop/
) หากเส้นทางมีไดเร็กทอรีที่ขาดหายไป ไดเร็กทอรีเหล่านี้จะถูกสร้างขึ้นโดยอัตโนมัติ หากไม่ได้ระบุ ตามค่าเริ่มต้น ไฟล์จะถูกบันทึกในไดเร็กทอรี Downloads/
ที่สร้างขึ้นในตำแหน่งที่เรียกใช้เครื่องมือ
-t TAG
สามารถใช้เพื่อตั้งค่าแท็กที่จะนำหน้าชื่อไฟล์ เช่น โดยใช้ -t "LABEL"
ชื่อสุดท้ายของแอปพลิเคชันที่ดาวน์โหลดจะมีลักษณะดังนี้ [LABEL] filename.apk
หมายเหตุ: แท็กนี้ใช้กับแอปพลิเคชันหลักและไฟล์เพิ่มเติม (ถ้ามี)
โปรดทราบว่าขณะนี้มีเพียงอินเทอร์เฟซบรรทัดคำสั่งเท่านั้นที่สามารถกำหนดค่าได้ด้วยอาร์กิวเมนต์ข้างต้น เว็บอินเทอร์เฟซจะถามเฉพาะชื่อแพ็คเกจ และจะใช้ค่าเริ่มต้นสำหรับพารามิเตอร์อื่นๆ ทั้งหมด
คุณสามารถใช้รหัสนี้ได้ฟรีภายใต้ใบอนุญาต MIT