admin管理员组文章数量:1604641
论文需要对apk进行渗透测试,于是需要批量下载apks,过程可分为两步;用到站点play top app,apkcombo
1. 获得包名
怎么获取包名?
在界面通过观察 每个apk都有https://play.google/store/apps/details?id=de.culture4life.luca 这种形式的链接,id=xxx,xxx就是包名了
我是笨方法将网页拉到底加载完全,inspect element,copy element另存为xml,离线用XPath Query: //div[@class="wXUyZd"]/a/@href 和文本查找匹配处理工具(vscode)获得一连串包名
如
2. 获得直链
怎么获得直接下载链接?
我没有在play store上找到apk的直链,于是利用第三方平台apkcombo,这里输入包名发送请求,如果存在对应apk,则返回apk下载直链(动态)
python 代码如下:
from selenium import webdriver
from selenium.webdrivermon.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
options = webdriver.ChromeOptions()
prefs = {'download.default_directory': 'F:\\andorid_mobile_penetration\\apks', #存储位置
"download.prompt_for_download": False,
'profile.default_content_settings.popups': 0, # 设置为0,禁止弹出窗口
}
options.add_experimental_option('prefs', prefs)
driver = webdriver.Chrome(chrome_options=options) # if chromedirver.exe not in path,指定chromedirver.exe路径, executable_path='C:/path/to/chromedriver.exe'
with open(r"urls.txt") as f, open("apk_links.txt", "w+") as ff:
packages = f.readlines()
for package in packages:
package = package.replace("\n", "")
link = "https://apkcombo/de-de/apk-downloader/?device=&arches=&sdkInt=28&sa=1&lang=en&dpi=480&q=" + package
driver.get(link)
try:
WebDriverWait(driver, 10).until(
EC.presence_of_element_located((By.CLASS_NAME, "download-item"))) #等动态链接被输出
except Exception:
print(package + " not found")
continue
element = driver.find_element_by_xpath(
'''//*[@id="apkcombo-server-tab"]/div/a''') # 定位直链元素
apk_name = str(element.text.split("\n")[0].encode("ascii", "ignore")) # 获得apk 名字
apk_link = element.get_attribute('href') # 获得 apk 链接
print(apk_name + " : " + apk_link + "\n")
ff.writelines(apk_name + " : " + apk_link + "\n") # 追加写名字:链接到文件
ff.close()
f.close()
driver.quit()
执行后输出如下,接着能用文本工具在处理下:
3. 下载
获得直链之后,可以选择方式进行批量下载,比如IDM添加批量下载任务。
本文标签: 动态seleniumPythonGoogleapks
版权声明:本文标题:利用python selenium动态爬取Google play store apks 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://m.elefans.com/dianzi/1728466227a1159483.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论