python爬虫数据与Android进行交互

2021-02-18 10:15发布

想要在Android studio导入一段python程序,求大佬指教应该如何进行

想要在Android studio导入一段python程序,求大佬指教应该如何进行

1条回答
给你三个亿
2楼 · 2021-02-22 09:56





#app数据

#简单

#比web端更容易,反爬虫不太强,大部分是http/https协议,大多返回json

#困难

#01可能需要适当的反编译,分析出加密算法并抓取到信息

#02可能加固,需要脱壳,然后反编译,分析出加密算法并抓取到信息

#03需要破解通过各式各样的签名,整数,设备绑定等方法,找到隐藏加密算法


#技术要求

#python爬虫开发经验app逆向java开发基础app脱壳android开发基础破解加密算法

#使用自动化工具,可省略大部分要求



#抓包工具

#fiddler(可以抓包和调试)mitmproxy(可以抓包,可以和Python脚本交互,解析app)sst是app应用


#自动化appium


#多应用docker


#豆果美食案例多线程

#抖音评论自动化工具

#多任务抖音快手今日头条并行抓取



#Android模拟器安装


#下载地址https://www.yeshen.com/


#开启CPU虚拟化vt,在BIOS里面设置


"""

查看电脑和手机的链接情况

PSD:\yeshen\Nox\bin>.\adb.exedevices-l注意是-L小写

Listofdevicesattached

127.0.0.1:62001deviceproduct:sagitmodel:MI_9device:shamu

"""

#使用adb安装apk

#.\adb.exeinstall包名.apk


#Genymotion是一个国外的安卓模拟器,调试复杂


#fiddler是一个web调试代理平台,可以监控和修改web数据流

#功能很强大展示表示层的数据类型,支持web和移动端数据流

#优点:

#可以查看所有浏览器、客户端应用或服务之间的web数据流

#手动或自动修改任意的请求和响应

#可以解密HTTPS数据流以便查看和修改

#缺点:

#只支持httphttpsftpwebsocket数据流等相关的协议

#不支持检测或修改smtppop3等

#无法处理请求和响应超过2GB的数据


#fiddler抓取web端Chrome浏览器数据

#配置fiddler:Tools菜单--Options菜单--HTTPS选项卡(DecryptHTTPSstaffic解密HTTPS)--各种确定安装证书

#...frombrowsersonly只检测浏览器(...fromremoteclientsonly检测移动端app)--Connections选项卡

#端口为8889--勾选Allowremotecompiterstoconnect允许远程链接,不勾选无法检测APP数据--最后保存重启

#配置浏览器:在谷歌安装扩展SwitchyOmega选项--新建情景模式--命名fillder--HTTP代理协议--代理服务器127.0.0.1--代理

#端口8889--左侧按钮应用选项--在浏览器点击该图标切换到fillder代理

#在浏览器访问网站,在fillder里面查看--Inspectors--Raw发现下面有乱码--在工具栏点击Decode按钮,此时重新刷新网站,无乱码


#mitmproxy抓包工具的安装

#mitmproxy就是MITM的proxy

#MITM就是中间人攻击Man-in-the-middleattack

#它和正常的代理一样转发请求,保障服务端与客户端的通信

#拦截请求,修改请求,拦截返回,修改返回

#可以载入自定义Python脚本


#安装环境:基于PythonWindows需要c++14.0以上Linux则直接基于Python

#pip3install-ihttps://pypi.tuna.tsinghua.edu.cn/simplemitmproxy

#>mitmproxy--version

#抓包使用Python交互Linux

#Error:mitmproxy'sconsoleinterfaceisnotsupportedonWindows.Youcanrunmitmdumpormitmwebinstead.

#(venv)D:\gcw\learn_crawler>mitmdump--version

#Mitmproxy:5.0.1

#Python:3.7.4

#OpenSSL:OpenSSL1.1.0j20Nov2018

#Platform:Windows-10-10.0.17763-SP0


#Ubuntu终端安装sudopip3install-ihttps://pypi.tuna.tsinghua.edu.cn/simplemitmproxy--ignore-installed

#终端输入mitmproxy默认监听的是8080端口

#在本地配置代理访问mitm.it安装证书,不需要输入密码,放入收信人的根证书目录


#windows使用mitmproxy文件保存到了test.txt里面了

#(venv)D:\gcw\learn_crawler>mitmdump-wtest.txt

#Proxyserverlisteningathttp://*:8080

#修改本地浏览器的switchyomega代理地址

#访问mitm.it安装证书

#mitmproxy-p8889切换监听端口

#mitmproxy-p8889-wtext1.txt

#键盘上的Z键,清楚所有抓包流数据

#setview-filter=!(-c200)过滤返回响应不为200的数据流


#mitmweb打开一个网页,在其他标签请求的时候数据流会显示到该网页,类似fiddler

"""

关于mitmproxy在虚拟机Ubuntu18里面安装好之后,在本地浏览器却无法使用该代理的问题

解决办法:

第一步:在虚拟机Ubuntu18里面安装ssh服务,可以自行百度

第二部:这个时候,使用xshell还是无法连接虚拟机,参考https://www.cnblogs.com/felixwang2/p/9441925.html

第三步:使用xshell连接成功,注意用户名是虚拟机Ubuntu的登陆用户名和密码也是登陆密码

"""


#PacketCapture抓包APP

"""

用于手机端抓包,是一款免root的APP,运行在安卓平台,用于捕获HTTP、HTTPS网络流量嗅探的应用程序

特点:捕获网络数据包,并记录他们,使用中间人技术对SSL解密,无需root权限,这个软件

使用了安卓提供的VpnServiceapi,实现了中间人攻击

与fiddler相比功能很少

安装的时候也需要安装证书

抓取数据包查看起来也不方便

"""


"""

appium移动端自动化测试工具

是一个自动化测试开源工具,支持iOS和安卓平台的原生应用,web应用和混合应用

允许不同平台使用同一套API来写自动化测试脚本,增加了代码复用性


selenium是web端,appium落泪是封装了标准的selenium客户端类库

appium为用户提供了方便的接口来执行各种设备动作


特点:多平台

使用client/server的设计模式

扩展了webdriver的协议

多语言

工作原理:多语言客户端-服务端-移动设备

安装:https://github.com/appium/appium-desktop/releases/tag/v1.15.1

下载Appium-windows-1.15.1.exeWindows版本的,这个是appium服务端

appium客户端使用pip下载


另一种不推荐的方法是使用node.js的方式,安装可能遇见各种错误,需要先安装node.js并加入path环境变量

在cmd中node-v和npm-v分别查看是否安装成功

安装npminstall-gappium安装appium,需要安装许多组件,会各种报错

例如:找不到python环境,因为它需要python2.7的环境

没有c++14.0版本

还有其他错误

解决办法是:打开win10开发者模式

装.net3.5

安装windows-10-sdk工具

安装windowsApplicationDriver

管理员权限powershell执行npminstall--global--productionwindows-build-tools

如果上面没有报错npmiappium-g回车开始安装

安装成功之后启动appium

在启动界面配置host和port

在高级选项卡可以配置日志的存放位置或者启动端口号

如果设置了高级配置,可与存储到presets,增加配置复用性

启动之后进入界面会显示版本号和监听端口:

右侧上角放大镜的功能是:可以向定位网页元素一样定位APP元素,方便编写自动化测试工具,点击之后会

跳出对话框,用于设置APP的各种参数,点击对话框右下角start...可以显示app元素,方便编辑xpath

"""


"""

docker使用

更高效的利用系统资源

更快速的启动时间

一致的运行环境

持续交付和部署

更轻松的迁移

"""

"""

安装dockertoolbox

点击dockerquickstartterminal进行docker初始化

会跳出一个鲸鱼

dockerversion查看版本

命令:

dockerrunhello-world如过本地没有会到官方镜像库查询并下载

dockerrun-itubuntubash(-it进入交互系统,就是bash界面shell命令)

dockerps-a查看所有容器的信息

dockerimages查看本地有多少镜像

dockerrmi镜像名(hello-world)删除镜像,如果删除不了,使用dockerrm提示序列(容器ID)

"""


#fiddler工具

"""

命令行下断点:

bpu域名(实现请求前的断点拦截)bpuhttps://www.baidu.com

bpu回车取消拦截

bpafter域名(拦截响应包)

bpa回车(取消响应包的拦截)

设置网页元素的重定向,当服务器上的某个文件需要替换时,可以重定向到本地文件,没问题时再替换线上文件

"""

"""

模拟器安装证书:

设置网络桥接模式,就是为了获取当前网络里面的IP地址,否则获取到的是net之后的地址,它是通过

地址转化所得到的地址,

"""



相关问题推荐

  • 回答 3

    换行。比如,print hello\nworld效果就是helloworld\n就是一个换行符。\是转义的意思,'\n'是换行,'\t'是tab,'\\'是,\ 是在编写程序中句子太长百,人为换行后加上\但print出来是一整行。...

  • 回答 42

    十种常见排序算法一般分为以下几种:(1)非线性时间比较类排序:a. 交换类排序(快速排序、冒泡排序)b. 插入类排序(简单插入排序、希尔排序)c. 选择类排序(简单选择排序、堆排序)d. 归并排序(二路归并排序、多路归并排序)(2)线性时间非比较类排序:...

  • 回答 70
    已采纳

    前景很好,中国正在产业升级,工业机器人和人工智能方面都会是强烈的热点,而且正好是在3~5年以后的时间。难度,肯定高,要求你有创新的思维能力,高数中的微积分、数列等等必须得非常好,软件编程(基础的应用最广泛的语言:C/C++)必须得很好,微电子(数字电...

  • 回答 28

    迭代器与生成器的区别:(1)生成器:生成器本质上就是一个函数,它记住了上一次返回时在函数体中的位置。对生成器函数的第二次(或第n次)调用,跳转到函数上一次挂起的位置。而且记录了程序执行的上下文。生成器不仅记住了它的数据状态,生成器还记住了程序...

  • 回答 9

    python中title( )属于python中字符串函数,返回’标题化‘的字符串,就是单词的开头为大写,其余为小写

  • 回答 6

    第一种解释:代码中的cnt是count的简称,一种电脑计算机内部的数学函数的名字,在Excel办公软件中计算参数列表中的数字项的个数;在数据库( sq| server或者access )中可以用来统计符合条件的数据条数。函数COUNT在计数时,将把数值型的数字计算进去;但是...

  • 回答 1

    head是方法,所以需要取小括号,即dataset.head()显示的则是前5行。data[:, :-1]和data[:, -1]。另外,如果想通过位置取数据,请使用iloc,即dataset.iloc[:, :-1]和dataset.iloc[:, -1],前者表示的是取所有行,但不包括最后一列的数据,结果是个DataFrame。...

  • Python入门简单吗2021-09-23 13:21
    回答 45

    挺简单的,其实课程内容没有我们想象的那么难、像我之前同学,完全零基础,培训了半年,直接出来就工作了,人家还在北京大公司上班,一个月15k,实力老厉害了

  • 回答 4

    Python针对众多的类型,提供了众多的内建函数来处理(内建是相对于导入import来说的,后面学习到包package时,将会介绍),这些内建函数功用在于其往往可对多种类型对象进行类似的操作,即多种类型对象的共有的操作;如果某种操作只对特殊的某一类对象可行,Pyt...

  • 回答 8

     相当于 ... 这里不是注释

  • 回答 4

    还有FIXME

  • 回答 3

    python的两个库:xlrd和xlutils。 xlrd打开excel,但是打开的excel并不能直接写入数据,需要用xlutils主要是复制一份出来,实现后续的写入功能。

  • 回答 8

    单行注释:Python中的单行注释一般是以#开头的,#右边的文字都会被当做解释说明的内容,不会被当做执行的程序。为了保证代码的可读性,一般会在#后面加一两个空格然后在编写解释内容。示例:#  单行注释print(hello world)注释可以放在代码上面也可以放在代...

  • 回答 2

    主要是按行读取,然后就是写出判断逻辑来勘测行是否为注视行,空行,编码行其他的:import linecachefile=open('3_2.txt','r')linecount=len(file.readlines())linecache.getline('3_2.txt',linecount)这样做的过程中发现一个问题,...

  • 回答 4

    或许是里面有没被注释的代码

  • 回答 26

    自学的话要看个人情况,可以先在B站找一下视频看一下

没有解决我的问题,去提问