[Extension] Updated version of the APK Downloader Chrome Extension

Search This thread

Bexton

Senior Member
Sep 26, 2011
643
1,129
50° 56' 33" 6° 57' 32"
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.
 

Attachments

  • apkdownloader-1.3.0.zip
    42.7 KB · Views: 5,218
  • apkdownloader-1.3.1.zip
    42.7 KB · Views: 36,741
Last edited:

gt573

Member
Feb 9, 2010
14
3
APK downloader 1.2.1 seemed to work just as well on google chrome 21 as your 1.3.1. Neither will download the IBM think tablet app, which is a free app. I get an error with both extensions. Any idea if there is a fix?
 

XlAfbk

Senior Member
Aug 11, 2010
1,484
440
Looks good, thx. Was always a bit worried about it using his server.

To everyone: I checked the code and there's no suspicious stuff in there, just what's expected to be there (a number of calls to the Market). 100% legit.
 
  • Like
Reactions: Bexton

Bexton

Senior Member
Sep 26, 2011
643
1,129
50° 56' 33" 6° 57' 32"
APK downloader 1.2.1 seemed to work just as well on google chrome 21 as your 1.3.1. Neither will download the IBM think tablet app, which is a free app. I get an error with both extensions. Any idea if there is a fix?

There's a difference in the way they do not work. Original APK Downloader (v1.2.1) doesn't work at all. Mine doesn't work if there're server-side validations to be passed, such as country limitation, device limitation or screen size limitation (and of course you can download only free apps). For the IBM app there's a limit for the screen resolution. So you need to have a device registered with the same email address you use for the extension, that is compatible with the app's screen resolution minimum: A screen width of 800 pixels or more and screens classified as Xlarge. Do you match these criteria?
 
  • Like
Reactions: gt573

gt573

Member
Feb 9, 2010
14
3
I just installed v1.2.1 last night and a quick test verified that it was able to download apps with my current version of google chrome (21). I only downloaded one app and it was one by the extension developer, I don't know if that makes a difference. Anyway, it wouldn't download the app I was after (IBM think) which is what brought me here. I was able to download another tablet app with your extension that the market tells me is not compatible with my device so I thought it would bypass the device and screen limitations. My device(Galaxy note sgh-i717) has 800 x 1280 resolution. It is running android 4.0.4. I changed the dpi to 160 in build.prop to match xlarge, still no go. Just for full disclosure (not asking for build.prop help here) I have tried modifying my build.prop to make my sgh-i717 appear as a Tab 10.1, but it didn't work, it still show as an sgh-i717 in the market.

There's a difference in the way they do not work. Original APK Downloader (v1.2.1) doesn't work at all. Mine doesn't work if there're server-side validations to be passed, such as country limitation, device limitation or screen size limitation (and of course you can download only free apps). For the IBM app there's a limit for the screen resolution. So you need to have a device registered with the same email address you use for the extension, that is compatible with the app's screen resolution minimum: A screen width of 800 pixels or more and screens classified as Xlarge. Do you match these criteria?
 
  • Like
Reactions: Silver Raptor

Bexton

Senior Member
Sep 26, 2011
643
1,129
50° 56' 33" 6° 57' 32"
I just installed v1.2.1 last night and a quick test verified that it was able to download apps with my current version of google chrome (21).

That's odd. But I checked back and according to the Manifest version 1 support schedule, the support for v1 extensions is not yet dropped - unlike I said in OP. According to the schedule the support will be dropped in "early 2013". Thus, APK Downloader v1.2.1 should still work as it did all the time; also with the latest Chrome versions. Now, to explain you why I said/thought it was:

The thing is that I used v1.2.1 almost every day and I never had problems to download Apps, except for a few that were labeled as non-compatible with my devices in the play store. (I will come back on that later..) Then, a few days ago, the extension just stopped working without me making any changes. So I opened Chrome's developer console and saw that the extension threw some content security policy errors fired by the extension's Javascript code.

Then I checked the author's website and saw a lot of recent comments by users having the same issue - that the extension just stopped working for them.

Since I've developed a few Chrome extensions myself, I remembered that the changelog between Manifest 1 and 2 includes a new content security policy and also that Manifest 1 was announced deprecated in Chrome 18.

So I checked my Chrome version and saw that it was updated just that morning (from 20.x to 21.0.1180.60 m). Hence, I thought that the exceptions, thrown by the extension, were due to the "fact" that the old content security policy, which was used before Manifest version 2, was unsupported with that Chrome-Update.

So I updated the extension's source code to use Manifest version 2. Finally, I had no more content security policy exceptions in the dev console and the downloads worked again.

And because there was no update by redphx and I've seen a lot of users had the same issue, I thought I'd share it here.

To cut a long story short:

  • I was wrong in saying that the original extension stopped as of Chrome 20+ due to missing support by Chrome.
  • However, for me v1.2.1 constantly throws content security policy exceptions in Chrome which prevent it from working at all. And as you can see from the comments on redphx's website it stopped working for others, too (whatever else the reason is..!?).
  • Also, as you can see from the schedule, v1.2.1 will stop working in the not-too-far-away future (unless redphx will release an update), whereas mine is "future-proof" (as far as it concerns Chrome).
  • Finally, my version does not include Analytics code, nor does it redirect you to a site which can not be verified to be safe (it should be, though).

I only downloaded one app and it was one by the extension developer, I don't know if that makes a difference.

No, the developer should be irrelevant.

Anyway, it wouldn't download the app I was after (IBM think) which is what brought me here. I was able to download another tablet app with your extension that the market tells me is not compatible with my device so I thought it would bypass the device and screen limitations.

Now, as I said earlier:

"I used v1.2.1 almost every day and I never had problems to download Apps, except for a few that were labeled as incompatible with my devices in the play store."

However, this was not true for all Apps that were labeled as incompatible. Some work, most do not. I'm not really sure how the checks work at this point. I know that there exist options for developers to restrict access to downloads by some "more advanced" parameters (apart from payment, obviously). And I think that the the device compatibility check for the In-App-Listings and the Play Store Website is separated from the logic that is used for those "advanced" restrictions (and no, I'm not talking about the basic country-limit here).

As another weird example take the new chameleon launcher beta. The Play Store says it would be compatible with my device. However, I can not download it. Neither through the Play Store, nor with the extension. Why not? Because, as you can read on the developer's website, your Emailaddress for Play Store must be paired with the Emailaddress that I/someone used in the developer's beta signup form that was on the website a few weeks ago. Means: eventhough it is a free App and labeled as compatible in Play Store, I can not download it because the developer needs to specifically allow my Account. As you can see, there're lots of possible and not always understandable reasons why somebody can download some apps while others can't.

My device(Galaxy note sgh-i717) has 800 x 1280 resolution. It is running android 4.0.4. I changed the dpi to 160 in build.prop to match xlarge, still no go. Just for full disclosure (not asking for build.prop help here) I have tried modifying my build.prop to make my sgh-i717 appear as a Tab 10.1, but it didn't work, it still show as an sgh-i717 in the market.

I don't think that editing the build.prop file will help with that at all. Even if I change everything in my build.prop, the Useragent that is send by the Play Store App still uses/reveals the real device info. No matter what I change, it always sends: "AndroidDownloadManager/4.1.1 (Linux; U; Android 4.1.1; Nexus One Build/JRO03H)".
 
Last edited:

prodigy7

Member
Jan 15, 2007
20
0
Hey bexton, thank u very much for your modded extension! I installed it because I get with the previous version the "ERROR: Cannot download this app!" message but with version I get the same message:

Chrome startup parameters: --ignore-certificate-errors --allow-running-insecure-content
Chrome Version: 21.0.1180.57
OS: Linux
 

kurtcl21

Member
Oct 31, 2010
17
2
thankz!! but not working here

Chrome version: 22.0.1219.0 (148586)

maybe disable ssl warnings don't work i don't know :(
 

XlAfbk

Senior Member
Aug 11, 2010
1,484
440
maybe it'd be possible to use a data-uri instead of this thread as download page?
 

locutus2000

Member
Feb 16, 2008
38
7
Amersfoort
Hey bexton, thank u very much for your modded extension! I installed it because I get with the previous version the "ERROR: Cannot download this app!" message but with version I get the same message:

Chrome startup parameters: --ignore-certificate-errors --allow-running-insecure-content
Chrome Version: 21.0.1180.57
OS: Linux
Hi, I have the same problem unfortunately on Windows 7 on Chrome 21
 

ytain

Senior Member
Feb 25, 2011
57
11
I still get the error "ERROR: Cannot download this app!". This is happening on Chrome 22.0.1229.2 dev-m, Win7 32bit.

Ytain
 

Bexton

Senior Member
Sep 26, 2011
643
1,129
50° 56' 33" 6° 57' 32"
Sorry for the late response, but I've been on holiday. For those of you who still get the error "ERROR: Cannot download this app!" for an app that should be downloadable(!!), please provide a link to the app. If you get this error for ALL apps, than please leave this info as well.

@XlAfbk: I don't think so, but I'd need to check on that.. If know how to, let me know. :p
 

Felimenta97

Senior Member
Aug 5, 2011
7,863
2,305
26
Ribeirão Preto
I also notice this problem. Didn't worked with any app that Google was saying to be incompatible with my device.

Sent from my LT26i with Tapatalk 2
 

Bexton

Senior Member
Sep 26, 2011
643
1,129
50° 56' 33" 6° 57' 32"

I had no problems downloading the app with the extension (find attached). Is it labeled as compatible with your device in the play store?

Sadly, it still doesn't support most of the apps I attempt to download. Here's a list:

[snip]

That's just a few.

I'm thinking that Google corrected some of the coding in Chrome as it regards to the Play Store to prevent people from downloading apps that WILL work with your devices, but still declare them incompatible.

I was able to download the apps that are labeled as compatible in play store. The Huffington Post and the CNN link were for Tablets only, so they failed. But when I tried their apps for phones, I was able to download those as well.

346qewx.jpg


How do I know if a free app is supposed to be downloadable?

You can't know. But if you set up everything correct, you can be almost sure that you can download all apps that are labeled as compatible with your device in Play Store. Me personally, I never found an app that was labeled as compatible and I was not able to download it via the extension. Whenever it is labeled as compatible, I can download it.

@Felimenta97: There're a few exceptions; for a few apps I was able to download them even though the Play Store said it would be incompatible. However, as said above, a general rule of thumb is that you will be able to download only the apps that are labeled as compatible for your device.
 

Attachments

  • com.conduit.locker-75.apk
    1.9 MB · Views: 363

Felimenta97

Senior Member
Aug 5, 2011
7,863
2,305
26
Ribeirão Preto
I see. But if you could work on that it would be nice. Some apps work on my phone, just play store is crazy about that.

Sent from my LT26i with Tapatalk 2
 

XlAfbk

Senior Member
Aug 11, 2010
1,484
440
@XlAfbk: I don't think so, but I'd need to check on that.. If know how to, let me know. :p
I tried modding the extension but for some reason it even fails with localhost instead of this thread, just replacing the 1 line containing the url *confused* (not a chrome extension guy so probably missing something there. more of a web dev)
Maybe if you'd explain why that is and why it needs some site in the first place I'd be able to figure it out.
 

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.