[Extension] Updated version of the APK Downloader Chrome Extension

Search This thread

k.knuse

New member
Aug 28, 2012
2
0
Bluestacks device-id not accepted?

Guys

being a Playbook user I am not in the possession of a device-id, therefore I used the id provided by my BlueStacks installation.
But whenever trying to download I get the "please disable SSL check / verify account" popup.

I am rather certain that I disabled the SSL check successfully: I was able to use the original APK Downloader that also required SSL to be disabled until a few Chrome updates ago (using the switches "--ignore-certificate-errors --allow-running-insecure-content").
The Google Play website says, "This app is compatible with your BlueStacks", so there should also not be an issue with country restrictions etc.

Can anybody advise how to resolve this?
Is the BlueStacks device-id maybe a bad choice despite being seemingly accepted?
I would happily use my Playbook's device-id, and I understand from supportforums.blackberry.com/t5/Android-Runtime-Development/Unique-Device-ID-for-Blackberry-Playbook/td-p/1594647/ (sorry, may not post link) that it is somehow available, but I was not able to access it.

Looking forward to your suggestions!
 

Bexton

Senior Member
Sep 26, 2011
643
1,129
50° 56' 33" 6° 57' 32"
Can anybody advise how to resolve this?
Is the BlueStacks device-id maybe a bad choice despite being seemingly accepted?
I would happily use my Playbook's device-id, and I understand from supportforums.blackberry.com/t5/Android-Runtime-Development/Unique-Device-ID-for-Blackberry-Playbook/td-p/1594647/ (sorry, may not post link) that it is somehow available, but I was not able to access it.

Looking forward to your suggestions!

As an answer in the linked thread suggests, you can get your device id with
Code:
Settings.System.getString(getContentResolver(), Settings.System.ANDROID_ID)

I made a simple app, which should display your device ID.

Download: http://d-h.st/Sc6

Source code of the app:
Code:
public class MainActivity extends Activity {
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        TextView _textview = (TextView) findViewById(R.id.textview);
        _textview.setText(
                Settings.System.getString(getContentResolver(), Settings.System.ANDROID_ID));
    }
}

Hope it helps.
 
  • Like
Reactions: XlAfbk

Bexton

Senior Member
Sep 26, 2011
643
1,129
50° 56' 33" 6° 57' 32"
The ID it shows on my Galaxy Nexus is different from the one GTalk service monitor is showing.

Thanks for pointing out. I've update the App to show also the "correct" Android Id. There're actually two of them: The previous version of my App showed only the Settings.Secure.ANDROID_ID. What we need here, is the GSF Android-ID (used by Google Services).

Here is the new DL link: http://d-h.st/u1B

New app screen looks as follows:

hKKum.jpg
 
  • Like
Reactions: k.knuse and XlAfbk

XlAfbk

Senior Member
Aug 11, 2010
1,484
440
GSF ID now matches GTalk monitors :)
Thx for the app, I'll keep it around as I tend to break my Google account every 2-3 weeks with new ROMs, this is faster than checking Service Monitor.
 

k.knuse

New member
Aug 28, 2012
2
0
Thanks for pointing out. I've update the App to show also the "correct" Android Id. There're actually two of them: The previous version of my App showed only the Settings.Secure.ANDROID_ID. What we need here, is the GSF Android-ID (used by Google Services).

Here is the new DL link:

Awesome, that did the trick! Using the GSF-ID from BlueStacks, APK Downloader is working again for me!
 

KeylanHalfdan

Senior Member
Jun 9, 2012
413
211
Does anyone know how to get this to download for incompatible devices. I used the old extension before to download some Japanese games on my phone when it said they were not compatible. But both the old and new are saying "cannot download app" now. They let me download apps that are compatible for at least one device just fine.

The app is Samsung remote - tab. I have the regular one, but it acts up sometimes on my galaxy tab 10.1. Reviews on the market say people have it on their galaxy tabs, both 10.1 and 7" version, but the market still says incompatible.

I am guessing that Google raised their security for these kinds of things?

Any help would be appreciated.

Sent from my Verizon Galaxy Nexus running Fruits 'N Vegetables with bacon grease (FNV007) via Xparent Cyan Tapatalk 2
 

XlAfbk

Senior Member
Aug 11, 2010
1,484
440
the extension suddenly stopped working this evening. login data and device id is correct, even re-logged-in.
JS console: Failed to load resource: the server responded with a status of 403 (Forbidden) https://android.clients.google.com/market/api/ApiRequest
Browser: Iron 21.0.1200.0 (Developer Build 151001 Windows) (this very build has been installed for a while and used to work fine)
 

Bexton

Senior Member
Sep 26, 2011
643
1,129
50° 56' 33" 6° 57' 32"
the extension suddenly stopped working this evening. login data and device id is correct, even re-logged-in.
JS console: Failed to load resource: the server responded with a status of 403 (Forbidden) https://android.clients.google.com/market/api/ApiRequest
Browser: Iron 21.0.1200.0 (Developer Build 151001 Windows) (this very build has been installed for a while and used to work fine)

Yep recognized the same just a few minutes ago. And I used it today for several downloads. Seems like Google is getting more and more strict on this topic. I'll check on that tonight or tomorrow and will post an update whenever I find something..
 

Bexton

Senior Member
Sep 26, 2011
643
1,129
50° 56' 33" 6° 57' 32"
Update: I flash a couple of builds every week. Thus, I get a couple of new Android Device IDs every week. For the last week I used the extension without changing my Android Device ID in the extension settings. Even though I know I must use a "valid" device ID which is associated with my Google Account, the extension worked all the time with the ID that I initially set it up with. I was surprised, but didn't cared about it because it worked. Anyway, tonight it stopped working, as mentioned in the last two posts. However, logging out at the extension's options page and logging back in with my current Android Device ID, made the extension start working again! :)

We will see, how long it will work this time.. ;) Anyway.. If the current version stopped working for you, try to logout and login again with your current Android Device ID. (For the ease of use, I recommend to install my App "Android Device ID" -> http://d-h.st/u1B)

Hope this helps.. (Feedback appreciated)
 

XlAfbk

Senior Member
Aug 11, 2010
1,484
440
I had already logged out and in again. The ID is the correct GSF one currently used by my phone. Is there any information I could provide that'd help you?

Edit: Here's a funny one: I logged out again, entered my login data and device id, copied the stuff I entered to a text file. Again the error message. Then I uninstalled the extension, restarted Iron, installed the extension, copied the login data from the text file and it's working. Guess something in the internals of Irons extension storage must have been quirked.
 
Last edited:

Bexton

Senior Member
Sep 26, 2011
643
1,129
50° 56' 33" 6° 57' 32"
I had already logged out and in again. The ID is the correct GSF one currently used by my phone. Is there any information I could provide that'd help you?

Edit: Here's a funny one: I logged out again, entered my login data and device id, copied the stuff I entered to a text file. Again the error message. Then I uninstalled the extension, restarted Iron, installed the extension, copied the login data from the text file and it's working. Guess something in the internals of Irons extension storage must have been quirked.

Glad to hear it is working again. :)
 

cr4zyE4RL

Member
Dec 28, 2011
22
1
no problems until "Samsung Smart View" app :(
says device not compatible, no chance to download!?
(sorry for no link, but can't until 10 posts)
 

Top Liked Posts

  • There are no posts matching your filters.
  • 69
    What is it?

    This is an updated (and slightly modified) version of redphx's awesome Google Chrome extension APK Downloader.
    It allows you to download APKs from the Play Store webpage via your desktop browser directly onto your computer.

    The original version stopped working as of Google Chrome version 20+ because starting with this Chrome version, all Google Chrome extension require to use the manifest version 2. When I noticed, I checked the author's page for any updates. But there were no updates on that.

    Update: Earlier, I said that the original APK Downloader extension stopped working because it uses Manifest version 1 and that Google Chrome dropped support for all extensions that use Manifest version 1.

    However, gt573 noted that he can still use the original extension (v1.2.1) with Chrome 21.

    So, I checked again the Manifest version 1 support schedule and I found that I was wrong there. Manifest version 1 was announced deprecated with the release of Chrome 18, but will be partitially supported until "early 2013".

    Nethertheless, the original APK Downloader (v1.2.1) does not work for me since my Chrome was update to 21.0.1180.60 m. The extension constantly throws content security policy exceptions when trying to download any App, which prevents the extension from working at all. Additionally, this is the error message I get on the extension page:

    23tpo93.jpg


    And according to the recent comments on the author's webpage, there's a bunch of other users who have/had the same problem with v1.2.1 within the last days. (For a detailed explanation of manifest version changes in Chrome and what that means for the original APK Downloader, click here to read the full story.)

    So: If APK Downloader v1.2.1 stopped working for you, feel free to use this updated version.

    What was changed?

    So.. Basically, this is the original APK Downloader v1.2.1 extension for the Google Chrome browser, downloaded from the author's - redphx - webpage. However, these are the changes that I made:

    As of version 1.3.0
    • Updated the extension manifest version from 1 to 2
    • Replaced deprecated functions in JavaScript and references in manifest.json
    • Changed JavaScript formatting from compressed to "Pretty Print" (so that the source code is readable for everybody)
    • Removed Google Analytics Code (Sorry redphx, all credits to you! But using GA for this, without even anonymizing the User IPs, is a No-Go as I think).
    • Changed the download redirect Url (when clicking the icon in the Url bar) from the author's webpage to a local domain "http://localhost/[..]".
    • Removed all other "extra" code, that was not used for the actual functionality.
    • Replaced extension icons.

    As of version 1.3.1
    • Changed the download redirect Url (when clicking the icon in the Url bar) from"http://localhost/[..]" to this thread's URL, because v1.3.0 required a local web server to be running for the extension in order to function.

    As of version 1.3.2
    • Changed the download redirect Url (when clicking the icon in the Url bar). Instead of open a new tab, as of version 1.3.2 it will simply reload the current Play Store URL and start the download!

    As of version 1.3.3
    • Fixed redirect bug, introduced in version 1.3.2
    • Major code clean up (reduced number of files from 16 to 12).

    As of version 1.3.4
    • Improved new reload function to support Play Store URLs that contain a hash key already.


    Get Started - Download
    To install the extension the steps are as follows: download and extract the following zip archive to your computer.

    Direct download link:
    apkdownloader-1.3.1.zip
    apkdownloader-1.3.2.zip
    apkdownloader-1.3.3.zip
    apkdownloader-1.3.4.zip

    How to set up?

    After you extracted the downloaded zip file to your computer, open Google Chrome and go to the extension page; you can copy and paste into the Url bar: chrome://chrome/extensions/

    Load it

    Now, enable "Developer mode" and load the "APK Downloader"-extension from the directory where you extracted it to.
    2jg2ecp.jpg


    Set it up - Google-Account

    To be able to download from the Play Store, you need to authenticate all requests. Therefore you need to "log in to your Google Account" at the extension's option page.
    svkuhx.jpg


    On the extension's options page, log in with your Google-Account (email-address and password) - the same Account that you used with your device! Also, you will need your Android Device-Id (which is part of the algorithm to generate a valid request key).

    Note: Basically this is not a "login" in the common sense. Your credentials are stored safely in Chrome's local data storage - on your own computer!!!

    Set it up - Android Device-Id

    To get your Android Device-Id, type in the dialer of your phone...
    Code:
    *#*#8255#*#*
    *#*#TALK*#*#

    ... and you will get the "GTalk Service Monitor" screen like the following. Search for "DEVICE-ID:". Everything that comes after "android-", that is your Device-Id.

    b6u450.jpg


    OR

    Use my App "Android Device-ID"

    hKKum.jpg


    (Almost) Done

    2j0cfma.jpg


    The extension is now available and ready set up. However, you need to follow 1 more step to actually use it; you need to disable SSL warnings. Therefore please read on at the original APK Downloader page at: http://codekiem.com/2012/02/24/apk-downloader/


    Credits
    All credits for the extension goes to redphoenix89 (or redphx @xda)! It's his code - I did only cosmetics.

    Legal Note / Disclaimer
    Finally, please note that the use of this Chrome extension is violating Google's Play Store TOS! You've been warned.
    11
    As promised, the repo and a zip:

    Chrome extension directly available on https://lekensteyn.nl/apk-downloader/
    Project repo (zip at downloads): https://github.com/Lekensteyn/apk-downloader

    Changelog for 1.4.1 - 2013-01-13:
    • Packaging-only change, add update URL to manifest file and provided ready-to-install CRX file.

    Changelog for version 1.4 - 2012-12-09:

    • Rewrite Javascript core of extension, do not make it look too obfuscated.
    • Chromium 23 compatibility. Due to restrictions on changing headers for clients.google.com, a new approach on retrieving the download URL and actually downloading an APK is implemented.
    • Due to the rewrite, you should not need to disable SSL warnings anymore.
    • Add help to options page.
    • Hide SIM operator options by default as you usually do not need those.

    @OP: please update the first post. Contributions are always welcome, simply do a pull request.
    9
    APK Downloader Chrome Extension 1.5.0

    I've released version 1.5.0 with some fixes:

    • Compatibility with new Play store (reported by existeam, Gaganpreet).
    • Detect when login has expired before downloading and open options page if necessary (requires new permission: access to tabs)
    • Insert email and device ID when trying to re-login (saves you from retyping this combination when session has expired).

    You can get it from https://lekensteyn.nl/apk-downloader/ as usual, source code at https://github.com/Lekensteyn/apk-downloader. This extension contains NO TRACKING CODE unlike Evozi's fork.

    Evozi's fork is based on opensource 1.4.x, with tracking code and removes validation for undownloadable APKs as a fix for new play store. Besides this, it also removes the copyright header of background.js, adds more tracking and some textual changes (adding links to his own apps and social accounts).

    Codekiems 1.4.3 is a modification of the open-source APK Downloader 1.4.2 plus fix for the English Google Play only (i.e. it does not work for other languages). Besides this, it also changes the home page and update URL to his domain.
    4
    Also DL purchased

    I changed line 7 in background.js, so the extension would also download purchased apps and not just free apps from this:
    Code:
        b && b.html && -1 < b.html.indexOf('data-isfree="true"') && chrome.pageAction.show(a)
    to this:
    Code:
        b && b.html && (-1 < b.html.indexOf('data-isfree="true"') || -1 < b.html.indexOf('data-ispurchased="true"')) && chrome.pageAction.show(a)
    4
    I got it fixed for Chromium 23. It required a rewrite because of policy changes that cause captures/modifications of the *clients.google.com domain being blocked.

    I'll polish it a further more with my brother and then get it published in a public git repository. Stay tuned, it should be ready tomorrow or the day thereafter.