I would like to download an APK file from http://www.apkmirror.com using a different user agent. The following works in Python 2:
import urllib
class ApkURLopener(urllib.FancyURLopener):
version = 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.81 Safari/537.36'
urllib._urlopener = ApkURLopener()
download_link = 'https://www.apkmirror.com/wp-content/themes/APKMirror/download.php?id=215041'
download_file = '/tmp/apkmirror_test/youtube.apk'
if __name__ == "__main__":
urllib.urlretrieve(url=download_link, filename=download_file)
I'm struggling a bit to find the code to do the same in Python 3 without using urllib.request.urlretrieve
, which might become deprecated in the future. So far I've come up with
#!/usr/bin/python3
import urllib.request
download_link = 'https://www.apkmirror.com/wp-content/themes/APKMirror/download.php?id=215041'
download_file = '/tmp/apkmirror_test/youtube.apk'
USER_AGENT = 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.81 Safari/537.36'
request = urllib.request.Request(url=download_link, headers={'User-Agent': USER_AGENT})
if __name__ == "__main__":
response = urllib.request.urlopen(url=request)
I suspect I should use the write
method of the response
object, but I'm not sure how, or indeed whether this is the way to do it. Any advice?