夜神模拟器(Android 5.1.1)
filder
mitmproxy
python3.7.3
jdk1.8.0_251
Android Studio(Android SDK 5.1)
xposed(Android 5.1)
JustTrustMe
这里先说明一下,抖音有ssl验证,夜神模拟器安装xposed和JustTrustMe之后,才能正常抓包,不然打开抖音是没有网的。
除了python3.7.3和mitmproxy,其余的资源都在百度网盘中,自取,地址:https://pan.baidu.com/s/1ZtvZIQvQ8A6rp02HtAOudQ。
安装好filder后,打开filder,左上角Tools -> Options,设置如下:
在网盘中下好xposed和JustTrustMe的apk文件后,直接点夜神右侧的安装APK,找到这两个框架的apk文件,点击安装,这里有个先后顺序,先安装xposed,安装后夜神桌面有一个xposed install,打开,然后下载xposed,
首先,在PC端通过pip install mitmproxy安装mitmproxy模块,安装好后,继续通过cmd,输入mitmproxy,这样就会在系统盘的用户目录下的.mitmproxy文件夹下生成许多证书,点击mitmproxy-ca-cert.p12,选本地计算机,直接点下一步,设置密码的位置不用填,直接下一步,证书照下图放:
import jsondef response(flow):if 'api3-normal-c-hl.amemv.com/aweme/v1/user/follower/list' in flow.request.url:for user in json.loads(flow.response.text)['followers']:user_info = dict()user_info['nickname'] = user['nickname']user_info['share_id'] = user['uid']user_info['douyin_id'] = user['short_id']user_info['sec_uid'] = user['sec_uid']if user_info['douyin_id'] == '0':user_info['douyin_id'] = user['unique_id']user_info['update_time'] = user['unique_id_modify_time']print(user_info)
然后配置夜神的wifi的代理,同样的8888端口和ip,关掉域防火墙,然后在douyin_fans.py文件目录打开命令行输入mitmdump -p 8888 -s douyin_fans.py,然后打开夜神上的抖音进入到粉丝里面,就可以看到命令行有输出了,如下图:
这里先解释一下为什么要下载Android Studio,主要是夜神模拟器是Android系统,而用Appium控制Android系统就需要Android的SDK,而现在的Android SDK与Android Studio是绑定的,安装好Android Studio后,按下图操作:
安装好jdk后,在系统变量中配置JAVA_HOME,以及在path中添加jdk的bin路径,jdk的环境就配好了。
安装好Appium后直接打开,启动服务:
platformName:平台名称,一般是Android或iOS.
deviceName:设备名称,手机的具体类型
appPackage:App程序包名
appActivity:入口Activity名,通常以.开头
adb shell
dumpsys window |grep mCurrentFocus
然后点击放大镜,然后按图配置如下参数:
打开cmd输入monitor,等会就会出现一个界面,然后打开夜神的抖音,进行如下操作:
from appium import webdriverfrom selenium.webdriver.support.ui import WebDriverWaitimport timeoption = {"platformName": "Android","platformVersion": "Andriod5.1.1","deviceName": "127.0.0.1:62001","appPackage": "com.ss.android.ugc.aweme","appActivity": "com.ss.android.ugc.aweme.main.MainActivity","noReset": True,"unicodekeyboard": True,"resetkeyboard": True,"automationName": "UiAutomator1"}driver = webdriver.Remote('http://localhost:4723/wd/hub', option)try:if WebDriverWait(driver, 5).until(lambda x: x.find_element_by_id('com.ss.android.ugc.aweme:id/c63')):driver.find_element_by_id('com.ss.android.ugc.aweme:id/c63').click()except:passdef get_size():x = driver.get_window_size()['width']y = driver.get_window_size()['height']return (x, y)try:if WebDriverWait(driver, 3).until(lambda x:x.find_element_by_id('com.ss.android.ugc.aweme:id/ai4')):driver.find_element_by_id('com.ss.android.ugc.aweme:id/ai4').click()driver.find_element_by_id('com.ss.android.ugc.aweme:id/ai4').send_keys('lv123052')if WebDriverWait(driver, 3).until(lambda x: x.find_element_by_id('com.ss.android.ugc.aweme:id/ghv')):driver.find_element_by_id('com.ss.android.ugc.aweme:id/ghv').click()if WebDriverWait(driver, 2).until(lambda x: x.find_element_by_id('android:id/text1')):driver.find_element_by_id('android:id/text1').click()driver.find_element_by_id('com.ss.android.ugc.aweme:id/ckr').click()except:passtry:if WebDriverWait(driver, 5).until(lambda x:x.find_element_by_id('com.ss.android.ugc.aweme:id/bce')):driver.find_element_by_id('com.ss.android.ugc.aweme:id/bce').click()time.sleep(2)except:passsize = get_size()x1 = int(size[0]*0.5)x2 = int(size[0]*0.7)y1 = int(size[1]*0.9)y2 = int(size[1]*0.2)while(True):time.sleep(0.5)driver.swipe(x1, y1, x2, y2)
夜神的代理打开,域防火墙关掉,然后用mitmdump命令运行douyin_fans.py文件,这里得说明一下,mongdb数据库的操作在douyin_fans.py文件中自行添加,然后直接run,douyin_appium.py文件,这样就会自行爬取抖音的某账号粉丝信息,效果如图:
联系客服