精华内容
下载资源
问答
  • 修改手机app数据的软件
    千次阅读
    2022-04-15 19:18:53

    在了解如何使用Fiddler工具抓包时,可以加深对接口的认知,而且可以拿到一些成熟的接口,方便自己写玩具的时候使用。当然了,这个仅仅是摸鱼的时候使用,切记不可拿来做商业宣传之类的事情、切记不要用于非法用途。

    引言

    Fiddler可以称为拉小提琴的人,也可以称作是骗子。

    Fiddler是位于客户端和服务端之间的HTTP代理,所以它可以监测两端之间的通信。

    既然我们可以获取到两端之间的数据传输,那么可以想象,这是否意味着我们可以在数据还未发送给目标端口的时候做一些操作呢,例如:

    • 分析客户端向服务端发起的,某个请求的细节
    • 将原本发送的数据扔掉,我们伪造客户端的请求或是服务端的响应
    • 测试这个网站的性能(是否抗压
    • 解密HTTPS的web会话

    安装与配置

    常用的几个快捷键:

    Ctrl+X:清空所有记录

    F12:启动或者停止抓包

    Delete:删除某条请求

    Shift + Delete:在选中一条请求后,清空其他的所有包

    Shifr + R:选中一条请求后,设置接下来的重复请求次数

    Ctrl+F:查找

    首先打开Fiddler工具,由于浏览器在请求外部资源时的默认访问路径,就是系统代理**[chrome浏览器->设置->高级->系统->打开您计算机的代理设置->可以查看代理服务器的地址和端口号],那么Fiddler直接代替该代理[工具栏->Tools->Options->connections下有一个act as system proxy on setup选项]**,便可以实现:在启动时自动的开始代理抓包,关闭软件后这个代理通道会自动关闭。

    HTTP协议概述

    在进行抓包操作前,首先需要了解HTTP/HTTPS协议,这里复习一点点计算机网络的知识。

    HTTP协议属于应用层协议,在HTTP里面规定了我们访问网页的时候如何进行缓存,以及请求什么格式等,主要是为了让人们访问网页的时候更快,更安全,而规定了很多参数。通俗点来讲,可以认为HTTP协议是面向业务的,它决定是否传输数据,以及传输数据的方法,和数据的格式等等。(TCP/IP协议来保证连接的可靠性,保证传输的东西不被损坏)

    现在我们打开fiddler,再打开CSDN看看,可以成功的获取到数据包,这里我们将text/html格式的请求包保存到本地:

    image-20220406131002109

    打开刚刚保存的文件可以看到,第一段是请求报文,第二段是响应报文。

    我们的客户端在访问网页的时候生成这段请求报文发送给服务器,服务器接收到这段文本后进行解析。

    image-20220406131145942

    请求报文

    回到HTTP概述,HTTP请求报文主要由请求行,请求头部、空一行、请求体( get请求没有请求体 )这四个部分组成:

    image-20220406133528890

    现在我们看看fiddler中的具体请求报文:

    image-20220406133050596

    • 请求行

      • GET表示请求方法,(如果后台采用restful风格编码,请求方法会用到PUT替换资源DELETE删除资源
      • URL表示请求的路径
      • HTTP/1.1表示http的协议以及版本号的说明
    • 请求头:表示发起请求时的一些附加信息

      • HOST表示主机在哪

      • Accept表示我想接收到什么内容,让服务器别传其他的内容回来

      • User-Agent表示系统和浏览器版本的一些说明

      • Accept-Encoding表示可接受的内容编码,比如gzip(我们在传输文件时为了节省空间,可能会压缩资源

      • Accept-Language表示接收的语言

        这里再介绍一些其他个人认为挺重要的请求头:

      • Referer表示我发送请求的这个请求,来自于哪个页面,可以用来防止盗链

      • Authorization表示客户端提供给服务端进行权限认证的信息

      • Content-Type表示提交给服务器的请求体内容类型

      • Cache-Control表示缓存机制,比如Cache-Control: no-cache

      • Pragma表示防止页面被缓存,和Cache-Control: no-cache作用相同

    响应报文

    HTTP响应报文主要由响应行,响应头、空一行、响应体这四个部分组成:

    image-20220406142107839

    • 响应行
      • 状态码:粗略来说,1xx表示提示接收到消息;2xx表示成功处理消息;3xx表示重定向相关;4xx表示客户端错误;5xx表示服务端错误。具体的状态码可以看常用状态码
    • 响应头
      • Server HTTP服务器的软件信息
      • Date 响应报文的时间
      • Set-Cookie 设置Cookie
      • Expires 指定缓存过期时间
      • Last-Modified 资源最后修改时间
      • Connection 如keep-Alive,表示保持tcp链接不关闭,不回永久保持链接,服务器可设置
      • Location 指明重定向的位置,新的URL地址,如304的情况

    AutoResponder自动响应器

    如果你对请求/响应拦截器知识点有一定了解的话,AutoResponder就是一种用于拦截请求的工具,它可以自定义响应。有时候我们想替换页面的资源,但是有无法对其服务器进行更改,就可以替换资源(这其实是一种自己骗自己的视觉效果,实现本地页面被替换的假象)

    选择AutoResponder,将上方的选项全部选中,然后在Rule Editor中:第一行设置待更换元素,第二行设置目标更换元素即可。

    提示:可以通过鼠标拖动的方式将左边的接口数据拖动到右边的编辑区

    img

    最终的结果是:原本服务器返回的资源,被替换为了你设置展示的资源

    如果你在生活中有时会需要连接公共场合的wifi,比如图书馆wifi之类的,如果你去设置了它的代理,然后将原本的(连接wifi时会自动跳出一个网页)页面数据替换为你伪造的数据,别人看到的就会是你替换后的数据。

    所以我们在外面千万不要贪图小便宜,连接陌生人的wifi : ),因为你连接上别人的wifi上网后,别人可以对你访问的页面进行抓包,然后将原本应该返回给你的数据替换为他设置的钓鱼链接。

    现在站在前端开发者的角度来看,在后端接口还没有数据的时候,我通常是选择在前端代码中进行mock模拟请求数据。现在通过Fiddler的自动响应器,我们可以这么做:

    • 正常请求前后端约定好的接口路径,当然了,肯定是拿不到数据的
    • 抓包后将该接口请求鼠标拖动到右边的编辑区(Enable rules, Accept all CONNECTs这两个选项一定要勾选上)
    • 鼠标右击该请求,选择Edit Response,修改没有数据的那个请求结果,保存,重新请求即可。

    Android手机抓包

    在了解了一些操作后娱乐一下,试试看对安卓手机进行抓包操作。

    首先按照具体的配置步骤进行手机的设置,照着教程一步一步进行配置即可。

    接下来我们以某分享图片的软件举例。

    在打开软件后选择目标的图片,就可以看到目标图片的路径了。

    img

    我们也可以对某音的视频进行抓包处理,由于Android手机版本问题,我们可以在电脑上下载模拟器,选择<6版本的安卓系统进行安装,下载抖音软件后可以成功抓包。

    更多相关内容
  • 手赚APP应用下载平台网站源码 手机APP软件推广赚钱类织梦模板 (带手机版数据同步) 安装教程https://www.a5ymg.cn/3001.html 本套织梦模板采用织梦最新内核开发的模板,这款模板使用范围广,不仅仅局限于一类型的企业...
  • Fiddler抓包工具抓取手机APP数据

    千次阅读 2022-04-27 14:24:07
    检查下Fiddler的右上角Online(如果你的没有online可以点击view勾选Show Toolbar就可以了)这样子就是OK的哦,这就证明我们的工具现在抓到的就是手机App的请求啦! 这边我们的配置就都搞定了然后就是我们的抓包啦,...

    Fiddler 简介

    Fiddler是一个http协议调试代理工具,它能够记录并检查所有你的电脑和互联网之间的http通讯,设置断点,查看所有的“进出”Fiddler的数据(指cookie,html,js,css等文件)、弱网测试等,今天我们浅谈一下Fiddler 这款强大的抓包工具)。

    Fiddler配置:

    Fiddler 抓取 https 协议会话需要进一步配置,在 Tools ->Options 菜单下,选择HTTPS标签并配置如下:

    手机抓取需要配置远程连接同样是在 Tools ->Options 菜单下,然后配置端口号这里我配置的是8888,(要与下边的手机上网络的端口保持一致,同时防火墙需要开启配置的端口号)并允许远程连接

    手机安装上Fiddler的安全证书:

    Fiddler下载安全证书:(傻瓜式yes ,是,ok)

     

     这时我们桌面上会有一个安全证书,然后把这个证书传输到手机上去安装CA证书,然后配置手机网络

     

     

    网络配置

    手机打开WIFI设置,长按我们连接的WIFI,然后点击修改网络(确保电脑和我们的手机处在同一)

     进去之后点击代理,把无修改为手动

     填写端口号、服务器主机名(win+r 输入cmd然后输入ipconfig命令查看)如下所示:

     

     检查下Fiddler的右上角Online(如果你的没有online可以点击view勾选Show Toolbar就可以了)这样子就是OK的哦,这就证明我们的工具现在抓到的就是手机App的请求啦!

    这边我们的配置就都搞定了然后就是我们的抓包啦,比如说我要抓取七鲜APP上账号里优惠券的信息,或则是京东e卡之类的一些东西

    完成请求响映数据

     然后手机操作点击进入到你想要抓取的页面,在Fiddler找到这个请求点击JSON就可以看到详细的数据信息

    这里只是浅浅的谈一下Fiddler的抓包功能,最后,记得抓完后把手机上WiFi的代理方式改回去哦,不然你的这个WIFI是用不了的哦。

    展开全文
  • ce修改器(Cheat Engine)一款专门修改内存修改编辑的游戏工具它包括16进制编辑,反汇编程序,内存查找工具 新版6.7版的CE与6.0 最大的区别就是添加了修改器制作工具,比之前版本更强大 ce修改器也是修改造梦西游3的一款...
  • python 手机app数据爬取

    千次阅读 2020-12-04 00:39:24
    @一:爬取主要流程简述1.APP的爬取比Web爬取更加容易,反爬虫没有那么强,且大部分数据是以JSON形式传输的,解析简单。2.在APP中想要查看请求与响应(类似浏览器的开发者工具监听到的各个网络请求和响应),就需要借助...

    今天向大家介绍app爬取。

    @

    一:爬取主要流程简述

    1.APP的爬取比Web爬取更加容易,反爬虫没有那么强,且大部分数据是以JSON形式传输的,解析简单。

    2.在APP中想要查看请求与响应(类似浏览器的开发者工具监听到的各个网络请求和响应),就需要借助抓包软件。

    3.在抓取之前,需要设置代理将手机处于抓包软件的监听下,就可以用同一网络进行监听,获得所有的网络和请求。

    4.如果是有规则的,就只需要分析即可;如果没有规律,就可以用另一个工具mitmdump对接Python脚本直接处理Response。

    5.抓取肯定不能由人手动完成,还需要做到自动化,还要对App进行自动化控制,可以用库Appium。

    二:抓包工具Charles

    1.Charles的使用

    Charles是一个网络抓包工具,比Fiddler功能更强大,可以进行分析移动App的数据包,获取所有的网络请求和网络内容

    2.安装

    (1)安装链接

    (2)须知

    charles是收费软件,但可以免费试用30天。试用期过了,还可以试用,不过每次试用不能超过30分钟,启动有10秒的延迟,但大部分还可以使用。

    (3)安装后

    3.证书配置

    (1)证书配置说明

    现在很多网页都在向HTTPS(超文本传输协议的加密版,即HTTP加入SSL层),经过SSL加密更加安全,真实,大部分都由CA机构颁发安全签章(12306不是CA机构颁发,但不被信任)。现在应用HTTPS协议的App通信数据都会是加密的,常规的截包方法是无法识别请求内部的数据的。

    要抓取APP端的数据,要在PC和手机端都安装证书。

    (2)windows系统安装证书配置

    打开Charles,点击Help->SSL Proxying->Install Charles Root Certificate,进入证书的安装页面:

    点击安装证书,就会打开证书安装向导,然后点击下一步,此时需要选择证书的存储区域,选择第二个选项”将所有证书放入下列存储”:

    然后点击浏览,选择证书存储位置为”受信任的根证书颁发机构”,点击确认并进入下一步:

    (3)Android手机安装证书配置

    手机与电脑连接同一个WiFi。

    设置如下:

    可以用操作系统命令ipconfig查看PC端ip:

    为10.61.131.172,默认代理端口号为8888。之后代理服务器为电脑的IP地址。端口为8888。设置如下:

    会发现360手机的标志

    接下来对手机下载证书:

    访问手机访问 chls.pro/ssl ,下载证书:

    此时下载的是个.pem 格式的。需要手动更改为.crt 格式,最后随便放进某个文件夹即可:

    用手机(我用的360手机)设置里的安全,找到从存储设备安装找到该crt文件进行配置:

    此时需要设置锁屏:

    就可以完成证书的安装。

    4.开启SSL监听

    点击Proxy->SSLProxying Settings,在弹出的窗口中点击Add按钮,添加需要监听的地址和端口号。需要监听所有的HTTPS请求,可以直接将地址和端口设置为,即添加:*设置,就可以抓取所有的HTTPS请求包;如果不配置,抓取的HTTPS请求包状态可能是unknown。

    这样就指定只监听我们需要的ip和端口的请求和响应。

    5.原理

    Charles运行时会在PC端的8888开启一个代理服务,实际上是一个HTTP/HTTPS的代理。

    可以是用手机通过相同的无线网络连接(这里用的是校园网),设置手机代理为Charles的代理地址,这样手机访问互联网的数据就会经过Charles抓包工具,Charles转发这些数据到真实的服务器,再转发到手机中。这样抓包工具(Charles)就起到了中间人的作用,还有权对请求和响应进行修改。

    6.抓包

    我们可以看到我们已经请求了很多数据了,点击左上角的扫帚按钮即可清空捕获到的所有请求,然后点击第二个监听按钮,表明Charles正在监听App的网络数据流。如下:

    抓包后可以看到音乐:

    可以通过分析不同的URL请求,获得数据,也可以通过修改数据,得到那些参数是需要的。

    这是有规则的,无规则的如果没有规律的url,就可以用另一个工具mitmdump对接Python脚本直接处理Response。

    三:抓包工具mitmproxy(免费的)

    1.简介

    mitmproxy是一个支持HTTP和HTTPS的抓包程序,有类似Fiddler和Charles的功能,但它是一个控制台的形式操作。

    2.关联组件

    mirmproxy还有两个关联组件。一个是mitmdump,是命令行接口,可以对接Python脚本,用Python处理数据;另一个是mitmweb,是一个web程序,可以清楚地查看mitmproxy捕获的请求。

    3.安装和证书配置

    (1)用pip安装

    这个是安装python后就有的安装方法,也是最简单的安装方法,在控制台输入

    Pip install mitmproxy即可,会自动安装mitmdump和mitmweb组件:

    但是到最后安装会失败:

    是因为安装这个包的 window 系统需要首先安装 Microsoft Visual C++ V14.0以上 才行。

    可以在https://visualstudio.microsoft.com/downloads/

    直接下载即可,安装之后需要c++的库之类的东西都安装了,然后再在命令行进行安装 mitmproxy即可:

    然后进入安装目录,我们选择第三个:

    在“安装 Visual Studio”屏幕中找到所需的工作负载,选择"使用的桌面开发C++"工作负荷:

    注:这里的文件太大,我直接安装到E盘。

    之后再安装就可以安装成功了:

    (2)在GitHub或官网上安装

    3.证书配置

    (1) 产生CA证书

    对于mitmproxy来说,如果想要截获HTTPS请求,也需要设置证书。它在安装后会提供一套CA证书,只要客户端信任了mitmproxy的证书,就可以通过mitmproxy获取HTTPS请求的具体内容,否则无法解析HTTPS请求。

    在cmd中输入命令行接口命令mitmdump,产生CA证书,在用户目录找到CA证书:

    这里的目录可以自行指定,但必须是在第一次运行mimdump时。

    (2)PC端安装

    电脑是Window系统,因此用mitmproxy-ca.p12,双击后出现导入证书的引导页:

    点击下一步,不需要设置密码:

    接下来点击下一步,需要选择证书的存储区域,和配置Charles一样:

    最后会有警告,选择是即可,证书就安装到我们的电脑上了:

    (3)手机端安装

    我的手机是Android系统,直接把mitmproxy-ca.pem文件发送到手机上即可。

    配置方法和Charles类似。HTTPS请求。

    手动更改为.crt 格式,最后随便放进某个文件夹即可,用手机(我用的360手机)设置里的安全,找到从存储设备安装找到该crt文件进行配置:

    4.抓包原理

    在mitmproxy中,会在PC端的8080端口运行,然后开启一个代理服务,就是一个HTTP/HTTPS代理,类似ip代理。

    手机和PC在同一局域网内,设置代理为mitmproxy的代理地址,抓包工具mitmproxy就相当于中间人的作用,数据就会流经抓包工具。这个过程还可以对接mitmdump,抓取到的请求和响应都可以直接用Python来处理,然后分析,存到本地,或存到数据库。

    5.设置代理

    在抓包前需要先设手机局域网置代理为抓包工具mitmproxy代理。

    (1)启动代理服务

    在cmd中输入mitmproxy,会在8080端口运行一个代理服务,由于该命令不支持Windows系统,因此在Windows系统中用mitmdump命令:

    用mitmdump启动代理服务,监听8080端口:

    (2)设置当前代理

    将手机和电脑连到同一局域网下,先用操作系统命令ipconfig查看PC端当前局域网的ip:

    为10.61.131.172,在手机端设置代理如下:

    这样就配置好了mitmproxy的代理。

    6.抓包

    运行mitmweb(由于mitmproxy不能用),就可以看到手机上的所有请求:

    网页呈现如下:

    随便打开一条网络请求,发现和在网页的开发者工具下,监听到的一样:

    7.mitmproxy的高级功能mitmdump

    上面的功能与方法在Fiddler和Charles中也有,那么mitmproxy的优势何在?

    在mitmproxy中它的强大体现到mitmdump工具,可以对接Python对数据请求进行处理。

    它是mitmproxy的命令行接口,可以对接python程序对请求进行处理,不需要手动截取和分析HTTP请求和响应,进行数据存储和解析都可以通过Python来完成。

    (1)简单获取数据(随便一个app)

    我们先创建一个文件夹:

    然后打开转到该文件夹下:

    输入mitmdump -w outfile(outfile名称和扩展名可以自定义,文件放到当前cmd打开目录下,也可以用绝对相对路径,但比较麻烦):

    截取广播页面:

    之后把截获的数据保存到文件夹下:

    打开文件,发现好多乱码:

    下面会对其进行处理。

    (2)可以指定一个脚本来处理截获的数据:

    Mitmdump -s script.py(脚本名字可以自定义),需要放在cmd当前目录下,也可以用绝对相对路径,但比较麻烦。

    写入如下代码:

    就是定义了一个request()方法,参数为url,其实是一个HTTPFlow对象,通过request属性即可获取到当前请求对象。然后打印出请求头,将User-Agent(用户代理,简称 UA,它是一个特殊字符串头,使得服务器能够识别客户使用的操作系统及版本、CPU 类型、浏览器及版本、浏览器渲染引擎、浏览器语言浏览器插件等)修改为MitmProxy。

    运行之后手机端访问http://httpbin.org/get,可以看到请求头:

    PC端如下:

    手机端请求的Headers实际上就是请求的Headers,User-Agent被修改成了mitmproxy(防反爬),PC端显示修改后的Headers内容,其User-Agent正是MitProxy。

    这样就可以让服务器识别不出我们的是爬虫程序了。

    (3)日志输出

    mitmdump提供了专门的日志输出功能,就是设定输出到控制台的颜色,可以分别为不同级别配置不同的颜色,更加直观:

    效果如下:

    (4)输出请求数据

    可以输出一些请求信息,比如请求连接(url),请求头(headers),请求Cookies(cookies),请求Host(host),请求方法(method),请求端口(port),请求协议(scheme)等。

    还可以把这些请求的信息进行修改后,再发送到服务器中,这样,服务器返回的可能不是app想请求的网页,这就是为什么一些app打开后却访问到了其他网址的原因。

    也可以通过该用法,通过修改Cookies,添加代理等方式来尽可能避免反爬。

    这里就先进行略过。

    (5)获得响应

    响应就是请求后服务器返回的信息,也就是我们需要的,大部分是json格式文件。

    对于json格式文件,mitmdump也提供了对应的处理接口,就是response()方法。

    我们可以打印各个http/https请求的响应内容,不过text才是我们想要的json格式文件,也可以用content,不过返回的是二进制文件。

    代码如下:

    我们先试一下:

    内容有些乱,接下来我们就进行分析得到我们需要的数据。

    四:利用mitmproxy进行app数据获取

    1.获取请求url

    2.接口url文件

    把接口保存到txt文件中:

    发现只有很长的接口才返回json文件。因此下面就需要对这些接口进行筛选。

    3.爬取json

    代码在pa_qu_json.py文件中,需要先创建一个json爬取数据文件夹,爬取后的结果如下:

    接下来用Python处理即可,这里只是简单爬取。在实际应用中,不是人工的,是用代码自动化进行分析各个请求和响应进行爬取。这里有个跨平台的移动端自动化测试工具,可以很方便地进行自动化爬取,在下一个爬虫博客中会详细讲到,希望大家把宝贵意见提出来一起学习进步。

    展开全文
  • 这是使用 fiddler 进行手机 app 的抓包,也可以使用 Charles,burpSuite 等。。。 电脑安装 Fiddler, 手机 和 安装 fiddler 的电脑处于同一个网络里, 否则手机不能把 HTTP 发送到 Fiddler 的机器上来。 配置 ...

     

     

    1. Fiddler 设置

     

    这是使用 fiddler 进行手机 app 的抓包,也可以使用 Charles,burpSuite 等。。。

    • 电脑安装 Fiddler,
    • 手机 和 安装 fiddler 的电脑处于同一个网络里, 否则手机不能把 HTTP 发送到 Fiddler 的机器上来。

     

    配置 Fiddler,允许"远程连接"。用 Fiddler 对 Android 应用进行抓包

    启动Fiddler,打开菜单栏中的 Tools > Fiddler Options,打开“Fiddler Options”对话框。

    在Fiddler Options”对话框切换到“Connections”选项卡,然后勾选“Allow romote computers to connect”后面的复选框,然后点击“OK”按钮。

    在本机命令行输入:ipconfig,找到本机的 ip 地址。

     

     

    2. 移动设备设置

     

    2.1. 安卓手机设置

    Android 设备上的代理服务器设置“”

    • 打开 android 设备的 “设置”->“WLAN”,找到你要连接的网络,在上面长按,然后选择“修改网络”,弹出网络设置对话框,在接下来弹出的对话框中,勾选“显示高级选项”。在接下来显示的页面中,点击“代理”,选择“手动”。然后在“代理服务器主机名”后面的输入框输入电脑的ip地址,在“代理服务器端口”后面的输入框输入8888,然后点击“保存”按钮。

    代理服务器主机名设为 PC 的 IP,代理服务器端口设为Fiddler上配置的端口8888,点"保存"。

    然后启动 android 设备中的浏览器,访问百度的首页,在 fiddler 中可以看到完成的请求和响应数据。

     

     

    2.2. IOS 应用进行抓包

    打开 IPhone, 找到网络连接, 打开 HTTP 代理, 输入 Fiddler 所在机器的 IP 地址(比如:192.168.1.104) 以及 Fiddler 的端口号8888

     

    2.3 安装证书、捕获 HTTPS 

    只能捕获 HTTP,而不能捕获 HTTPS 的解决办法:

    • 为了让 Fiddler 能捕获 HTTPS 请求,需要在 安卓设备 或者 苹果设备上安装 证书

    IOS 设备步骤:

    1. 首先要知道 Fiddler 所在的机器的 IP 地址:假如我安装了 Fiddle r的机器的IP地址是:192.168.1.104
    2. 打开IPhone 的Safari, 访问 http://192.168.0.52:8888, 点"FiddlerRoot certificate" 然后安装证书

     

    过证书校验

    上面的设置还不能抓像招商银行、支付宝等 APP的 https 包,因为这些 APP 对 https 证书进行了校验,还需要将 Fiddler 代理服务器的证书导到 Android 设备上才能抓这些 APP 的包

    导入的过程:

    打开浏览器,在地址栏中输入代理服务器的IP和端口,会看到一个Fiddler提供的页面:

    点击页面中的 “FiddlerRootcertificate” 链接,接着系统会弹出对话框:

    输入一个证书名称,然后直接点“确定”就好了。

    注意:用完了, 记得把 IPhone 上的 Fiddle r代理关闭, 以免 IPhone 上不了网。

     

    也可以使用模拟器,例如:雷电、夜神、蓝叠  等等。。

     

     

     

    3. 斗鱼app、妹子图app

     

    斗鱼 官网:https://www.douyu.com/    斗鱼 app 下载:https://www.douyu.com/client?tab=client#mobile

    可以到 妹子图官网 下载 妹子图app

    创建项目 'douyu'

    scrapy startproject douyu

    树形图展示项目

    cd douyu/
    tree

     

    Sublime 打开项目

    subl .

     

    生成采集模块 spider

    使用 genspider 在当前项目中创建 spider。语法: scrapy genspider [-t template] <name> <domain>

    $ scrapy genspider -l
    Available templates:
      basic
      crawl
      csvfeed
      xmlfeed
    
    $ scrapy genspider -d basic
    import scrapy
    
    class $classname(scrapy.Spider):
        name = "$name"
        allowed_domains = ["$domain"]
        start_urls = (
            'http://www.$domain/',
            )
    
        def parse(self, response):
            pass
    
    $ scrapy genspider -t basic example example.com
    Created spider 'example' using template 'basic' in module:
      mybot.spiders.example

    创建:

    scrapy genspider douyu_spider douyucdn.cn
    

     

    编辑项目

    item.py

    import scrapy
    
    class DouyuItem(scrapy.Item):
        # define the fields for your item here like:
        data = scrapy.Field()
        image_path = scrapy.Field()
        pass

     

    setting.py

    设置 USER_AGENT

    USER_AGENT = 'DYZB/2.271 (iPhone; iOS 9.3.2; Scale/3.00)'

     

    douyu_spider.py 

    # -*- coding: utf-8 -*-
    
    
    import json
    import scrapy
    
    
    class DouYuSpider(scrapy.spiders.Spider):
        name = 'douyu_spider'
        allowed_domains = ["douyucdn.cn"]
        '''添加内容'''
        offset = 0
        start_urls = [f'http://capi.douyucdn.cn/api/v1/getVerticalRoom?limit=20&offset={offset}']
    
        def parse(self, response):
            """添加内容"""
            data = json.loads(response.body)['data']
            if not data:
                return
    
            for it in data:
                # item = DouyuItem()
                item = dict()
                item['image_url'] = it['vertical_src']
                item['data'] = it
                # yield item
                print(item)
    
            self.offset += 20
            yield scrapy.Request(
                f'http://capi.douyucdn.cn/api/v1/getVerticalRoom?limit=20&offset={self.offset}',
                callback=self.parse
            )
    
    
    if __name__ == '__main__':
        from scrapy import cmdline
        cmdline.execute('scrapy crawl douyu_spider'.split())
        pass
    
    

     

    pipeline.py

    文件系统存储: 文件以它们URL的 SHA1 hash 作为文件名

    sha1sum sha1sum对文件进行唯一较验的hash算法, 

    用法: sha1sum [OPTION] [FILE]... 参数: -b, --binary 二进制模式读取 -c, --check 根据sha1 num检查文件 -t, --text 文本模式读取(默认)

    举例:

    f51be4189cce876f3b1bbc1afb38cbd2af62d46b  scrapy.cfg
    { 'image_path': 'full/9fdfb243d22ad5e85b51e295fa60e97e6f2159b2.jpg', 'image_url': u'http://staticlive.douyucdn.cn/upload/appCovers/845876/20160816/c4eea823766e2e5e018eee6563e4c420_big.jpg' }

    测试:

    sudo vi test.txt
    拷贝内容
    http://staticlive.douyucdn.cn/upload/appCovers/845876/20160816/c4eea823766e2e5e018eee6563e4c420_big.jpg
    sha1sum test.txt 
    9fdfb243d22ad5e85b51e295fa60e97e6f2159b2 test.txt
    

     

    参考文档:http://doc.scrapy.org/en/latest/topics/media-pipeline.html

    下面是你可以在定制的图片管道里重写的方法:

    class scrapy.pipelines.images.ImagesPipeline  ( ImagesPipeline 是 FilesPipeline 的扩展 )

    • get_media_requests(iteminfo)
      管道会得到文件的 URL 并从项目中下载。需要重写 get_media_requests() 方法,
      并对各个图片 URL 返回一个 Request。( Must return a Request for each image URL. )
      def get_media_requests(self, item, info):
          for image_url in item['image_urls']:
              yield scrapy.Request(image_url)
    • item_completed(resultsiteminfo)

    当它们完成下载后,结果将以2-元素的元组列表形式传送到item_completed() 方法 results 参数: 每个元组包含 (success, file_info_or_error):

    • success 是一个布尔值,当图片成功下载时为 True,因为某个原因下载失败为False

    • file_info_or_error 是一个包含下列关键字的字典(如果成功为 True)或者出问题时为Twisted Failure

      • url - 文件下载的url。这是从 get_media_requests() 方法返回请求的url。
      • path - 图片存储的路径
      • checksum - 图片内容的 MD5 hash

      下面是 item_completed(results, items, info)中 results 参数的一个典型值:

    [(True,
    {'checksum': '2b00042f7481c7b056c4b410d28f33cf',
     'path': 'full/0a79c461a4062ac383dc4fade7bc09f1384a3910.jpg',
     'url': 'http://staticlive.douyucdn.cn/upload/appCovers/420134/20160807/f18f869128d038407742a7c533070daf_big.jpg'}),
    (False,
    Failure(...))]

    默认 get_media_requests() 方法返回 None ,这意味着项目中没有文件可下载。

    item_completed(results, items, info)

    当图片请求完成时(要么完成下载,要么因为某种原因下载失败),该方法将被调用
    item_completed() 方法需要返回一个输出,其将被送到随后的项目管道阶段,因此你需要返回(或者丢弃)项目
    举例:
    其中我们将下载的图片路径(传入到results中)存储到file_paths 项目组中,如果其中没有图片,我们将丢弃项目:

    from scrapy.exceptions import DropItem
    
    def item_completed(self, results, item, info):
        image_paths  = [x['path'] for ok, x in results if ok]
        '''
        image_paths=s[]
        for ok, x in results:
            if ok:
                image_paths.append(x['path'])
        return image_paths
        '''
        if not image_paths :
            raise DropItem("Item contains no images")
        item['image_paths'] = image_paths
        return item

    默认情况下,item_completed()方法返回项目

     

    定制图片管道:

    下面是项目图片管道

    import scrapy
    from scrapy.pipelines.images import ImagesPipeline
    from scrapy.exceptions import DropItem
    
    class ImagesPipeline(ImagesPipeline):
    
        def get_media_requests(self, item, info):
            image_url = item['image_url']
            yield scrapy.Request(image_url)
    
        def item_completed(self, results, item, info):
            image_paths = [x['path'] for ok, x in results if ok]
            if not image_paths:
                raise DropItem("Item contains no images")
            item['image_path'] = image_paths[0]
            return item

    启用pipelines

    设置图片下载位置

    是定义在 IMAGES_STORE 设置里的文件夹

    IMAGES_STORE = '/home/python/project/douyu/photos'

    启用PIPELINES:设置item后处理模块

    ITEM_PIPELINES = {
    'douyu.pipelines.ImagesPipeline': 300,
    }

    运行爬虫

    scrapy runspider douyu/spiders/douyu_spider.py
    或者是 scrapy crawl douyu_spider

    项目还缺什么? item 存储、pipeline.py 编写

    import json
    import codecs
    
    class JsonWriterPipeline(object):
    
        def __init__(self):
            self.file = codecs.open('items.json', 'w', encoding='utf-8')
    
        def process_item(self, item, spider):
            line = json.dumps(dict(item), ensure_ascii=False) + "\n"
            self.file.write(line)
            return item
    
        def spider_closed(self, spider):
            self.file.close()

    启用 JsonWriterPipeline 编写

    ITEM_PIPELINES = {
        'douyu.pipelines.ImagesPipeline': 300,
        'douyu.pipelines.JsonWriterPipeline': 800,
    }

    再次运行

     scrapy crawl douyu_spider

     

     

    美团 App 热门商圈团购采集 (1)

     

    环境:针对美团版本5.4

    在 tutorial 项目下,新建一个 spider

    scrapy genspider -t basic Meituan_City meituan.com

    编辑items.py

    class MeituanCity(Item):
    data = Field()

    编辑 Meituan_City.py

    # -*- coding: utf-8 -*-
    import scrapy
    import json
    from tutorial.items import MeituanCity
    
    class MeituanCitySpider(scrapy.Spider):
        name = "Meituan_City"
        allowed_domains = ["meituan.com"]
        start_urls = (
            'http://api.mobile.meituan.com/group/v1/city/list?show=all',
        )
    
        def parse(self, response):
            data = json.loads(response.body)
            for item in data['data']:
                cityId = item['id']
                # http://api.mobile.meituan.com/group/v2/area/list?cityId=42&spatialFields=center
                url = 'http://api.meituan.com/group/v2/area/list?cityId=%s&spatialFields=center' % cityId
                print url
                yield scrapy.Request(
                    url,
                    callback=self.Parse_Geo,
                    meta={'item': item}
                )
                break
    
    
        def Parse_Geo(self, response):
            print response.url
            data = json.loads(response.body)
            metaitem = response.meta['item']
    
            # 商区信息
            subareasinfo = dict()
            if 'data' in data:
                if 'subareasinfo' in data['data']:
                    for item in data['data']['subareasinfo']:
                        subareasinfo[item['id']] = item
    
            if 'data' in data:
                if 'areasinfo' in data['data']:
                    for line in data['data']['areasinfo']:
                        # 行政区
                        districtName = line['name']
                        districtId = line['id']
                        for tmp in line['subareas']:
                            # 商圈信息
                            area = subareasinfo[tmp]
                            center = area['center']
                            center = center.replace('POINT(', '').replace(')', '').split()
                            if len(center) > 1:
                                lat = center[1]
                                lng = center[0]
                            longitude = None
                            latitude = None
                            try:
                                longitude = str(int(float(lng) * 1000000))
                                latitude = str(int(float(lat) * 1000000))
                            except:
                                pass
                            Item = MeituanCity()
                            Item['data'] =dict()
                            geoItem=Item['data'] 
                            # 城市信息
                            geoItem['cityid'] = metaitem['id']
                            geoItem['cityname'] = metaitem['name']
                            # 行政区
                            geoItem['districtId'] = districtId
                            geoItem['districtName'] = districtName
                            # 商圈
                            geoItem['SubAreaId'] = area['id']
                            geoItem['secondArea'] = area['name']
                            # 经纬度
                            geoItem['longitude'] = longitude
                            geoItem['latitude'] = latitude
                            yield Item

    此时运行:

    scrapy runspider tutorial/spiders/Meituan_City.py

     

     

    美团 App 热门商圈团购采集 (2)

     

    把上节内容生成的城市信息 items.json改成city_items.json 作为第二部分爬虫的启动数据

    添加items.py

    class MeituanItem(Item):
        data = Field()

    创建模板:

    scrapy genspider -t basic Meituan_meishi meituan.com

    添加以下代码到Meituan_meishi.py

    # -*- coding: utf-8 -*-
    import scrapy
    import codecs
    import json
    from tutorial.items import MeituanItem
    import re
    
    class MeituanMeishiSpider(scrapy.Spider):
        '''
        美食团购页面信息采集
        '''
        name = "Meituan_meishi"
        allowed_domains = ["meituan.com"]
        '''
        start_urls = (
            'http://www.meituan.com/',
        )
        '''
        offset = 0
        def start_requests(self):
            file = codecs.open('city_items.json', 'r', encoding='utf-8')
            for line in file:
                item = json.loads(line)
                cityid = item['data']['cityid']
                latitude = item['data']['latitude']
                longitude= item['data']['longitude']
    
                lat = round(float(latitude), 6)
                lng= round(float(longitude), 6)
    
                url = 'http://api.mobile.meituan.com/group/v4/deal/select/city/42/cate/1?sort=defaults&mypos='+ str(lat) +'%2C'+ str(lng) +'&offset=0&limit=15'
                yield scrapy.Request(url,callback=self.parse)
                break
            file.close()
    
    
        def parse(self, response):
            '''
            数据存储以及翻页操作
            '''
            item = MeituanItem()
    
            data = json.loads(response.body)
            item['data']=dict()
            item['data'] = data
            yield item
    
            offset = re.search('offset=(\d+)',response.request.url).group(1)
            url = re.sub('offset=\d+','offset='+str(int(offset)+15),response.request.url)
            yield scrapy.Request(url,callback=self.parse)

    运行:scrapy runspider tutorial/spiders/Meituan_meishi.py

     

     

    采集方案策略设计

     

    首先大的地方,我们想抓取某个数据源,我们要知道大概有哪些路径可以获取到数据源,基本上无外乎三种:

    • PC端网站

    • 针对移动设备响应式设计的网站(也就是很多人说的 H5, 虽然不一定是H5);

    • 移动 App

    原则是能抓移动App的,最好抓移动App,如果有针对移动设备优化的网站,就抓针对移动设备优化的网站,最后考虑PC网站。因为移动 App 基本都是 API 很简单,而移动设备访问优化的网站一般来讲都是结构简单清晰的 HTML,而 PC 网站自然是最复杂的了;针对 PC 端网站和移动网站的做法一样,分析思路可以一起讲,移动App单独分析。

     

    网站类型的分析

    首先是网站类的,使用的工具就是 Chrome,建议用 Chrome 的隐身模式,分析时不用频繁清除 cookie,直接关闭窗口就可以了。

    具体操作步骤如下:

    • 输入网址后,先不要回车确认,右键选择审查元素,然后点击网络,记得要勾上preserve log选项,因为如果出现上面提到过的重定向跳转,之前的请求全部都会被清掉,影响分析,尤其是重定向时还加上了Cookie;

    • 接下来观察网络请求列表,资源文件,例如css,图片基本都可以忽略,第一个请求肯定就是该链接的内容本身,所以查看源码,确认页面上需要抓取的内容是不是在HTML标签里面,很简单的方法,找到自己要找的内容,看到父节点,然后再看源代码里面该父节点里面有没有内容,如果没有,那么一定是异步请求,如果是非异步请求,直接抓该链接就可以了。 分析异步请求,按照网络列表,略过资源文件,然后点击各个请求,观察是否在返回时包含想要的内容,有几个方法:

    • 内容比较有特点,例如人的属性信息,物品的价格,或者微博列表等内容,直接观察可以判断是不是该异步请求;

    • 知道异步加载的内容节点或者父节点的class或者id的名称,找到js代码,阅读代码得到异步请求; 确认异步请求之后,就是要分析异步请求了,简单的,直接请求异步请求,能得到数据,但是有时候异步请求会有限制,所以现在分析限制从何而来。

    针对分析对请求的限制,思路是逆序方法。

    • 先找到最后一个得到内容的请求,然后观察headers,先看post数据或者url的某个参数是不是都是已知数据,或者有意义数据,如果发现不确定的先带上,只是更改某个关键字段,例如page,count看结果是不是会正常,如果不正常,比如多了个token,或者某个字段明显被加密,例如用户名密码,那么接下来就要看JS的代码,看到底是哪个函数进行了加密,一般会是原生JS代码加密,那么看到代码,直接加密就行,如果是类似RSA加密,那么就要看公钥是从何而来,如果是请求得到的,那么就要往上分析请求,另外如果是发现请求headers里面有陌生字段,或者有Cookie也要往上看请求,Cookie在哪一步设置的;

    • 接下来找到刚刚那个请求未知来源的信息,例如Cookie或者某个加密需要的公钥等等,看看上面某个请求是不是已经包含,依次类推。

     

    App 的分析

    App 类使用的工具是 Fidder,手机和电脑在一个局域网内,先用 Fidde r配置好端口,然后手机设置代理,ip 为电脑的 ip,端口为设置的端口,然后如果手机上请求网络内容时,Fidder 会显示相应地请求,那么就 ok 了,分析的大体逻辑基本一致,限制会相对少很多,但是也有几种情况需要注意:

    • 加密,App有时候也有一些加密的字段,这个时候,一般来讲都会进行反编译进行分析,找到对应的代码片段,逆推出加密方法;
    • gzip压缩或者base64编码,base64编码的辨别度较高,有时候数据被gzip压缩了,不过Charles都是有自动解密的;
    • https证书,有的https请求会验证证书, Fidder提供了证书,可以在官网找到,手机访问,然后信任添加就可以。

     

     

    爬虫搜索策略

     

    在爬虫系统中,待抓取 URL 队列是很重要的一部分。待抓取 URL 队列中的 URL 以什么样的顺序排列也是一个很重要的问题,因为这涉及到先抓取那个页面,后抓取哪个页面。而决定这些 URL 排列顺序的方法,叫做抓取策略。

     

    1、 深度优先搜索策略(顺藤摸瓜)(Depth-First Search)

    即图的深度优先遍历算法。网络爬虫会从起始页开始,一个链接一个链接跟踪下去,处理完这条线路之后再转入下一个起始页,继续跟踪链接。

     

    2、 广度(宽度)优先搜索策略(Breadth First Search)

    宽度优先遍历策略的基本思路是,将新下载网页中发现的链接直接插入待抓取URL队列的末尾。也就是指网络爬虫会先抓取起始网页中链接的所有网页,然后再选择其中的一个链接网页,继续抓取在此网页中链接的所有网页。

    有很多研究将广度优先搜索策略应用于聚焦爬虫中。其基本思想是认为与初始URL在一定链接距离内的网页具有主题相关性的概率很大。

    广度优先搜索和深度优先搜索

    深度优先搜索算法涉及的是堆栈

    广度优先搜索涉及的是队列。

    堆栈(stacks)具有后进先出(last in first out,LIFO)的特征

    队列(queue)是一种具有先进先出(first in first out,LIFO)特征的线性数据结构

     

    Scrapy是以广度优先还是深度优先进行爬取的呢?

    默认情况下,Scrapy使用 LIFO 队列来存储等待的请求。简单的说,就是 深度优先顺序 。深度优先对大多数情况下是更方便的。如果您想以 广度优先顺序 进行爬取,你可以设置以下的设定:

    DEPTH_PRIORITY = 1
    SCHEDULER_DISK_QUEUE = 'scrapy.squeue.PickleFifoDiskQueue'
    SCHEDULER_MEMORY_QUEUE = 'scrapy.squeue.FifoMemoryQueue'

     

    二叉树的深度优先遍历与广度优先遍历 [ C++ 实现 ]

    深度优先搜索算法(Depth First Search),是搜索算法的一种。是沿着树的深度遍历树的节点,尽可能深的搜索树的分支。

    当节点v的所有边都己被探寻过,搜索将回溯到发现节点v的那条边的起始节点。这一过程一直进行到已发现从源节点可达的所有节点为止。

    如果还存在未被发现的节点,则选择其中一个作为源节点并重复以上过程,整个进程反复进行直到所有节点都被访问为止。

    如右图所示的二叉树:

    A 是第一个访问的,然后顺序是 B、D,然后是 E。接着再是 C、F、G。

    那么,怎么样才能来保证这个访问的顺序呢?

    分析一下,在遍历了根结点后,就开始遍历左子树,最后才是右子树。

    因此可以借助堆栈的数据结构,由于堆栈是后进先出的顺序,由此可以先将右子树压栈,然后再对左子树压栈,

    这样一来,左子树结点就存在了栈顶上,因此某结点的左子树能在它的右子树遍历之前被遍历。

    深度优先遍历代码片段

    //深度优先遍历
    void depthFirstSearch(Tree root){
        stack<Node *> nodeStack;  //使用C++的STL标准模板库
        nodeStack.push(root);
        Node *node;
        while(!nodeStack.empty()){
            node = nodeStack.top();
            printf(format, node->data);  //遍历根结点
            nodeStack.pop();
            if(node->rchild){
                nodeStack.push(node->rchild);  //先将右子树压栈
            }
            if(node->lchild){
                nodeStack.push(node->lchild);  //再将左子树压栈
            }
        }
    }

    广度优先搜索算法(Breadth First Search),又叫宽度优先搜索,或横向优先搜索。

    是从根节点开始,沿着树的宽度遍历树的节点。如果所有节点均被访问,则算法中止。

    如右图所示的二叉树,A 是第一个访问的,然后顺序是 B、C,然后再是 D、E、F、G。

    那么,怎样才能来保证这个访问的顺序呢?

    借助队列数据结构,由于队列是先进先出的顺序,因此可以先将左子树入队,然后再将右子树入队。

    这样一来,左子树结点就存在队头,可以先被访问到。

    广度优先遍历代码片段

    //广度优先遍历
    void breadthFirstSearch(Tree root){
        queue<Node *> nodeQueue;  //使用C++的STL标准模板库
        nodeQueue.push(root);
        Node *node;
        while(!nodeQueue.empty()){
            node = nodeQueue.front();
            nodeQueue.pop();
            printf(format, node->data);
            if(node->lchild){
                nodeQueue.push(node->lchild);  //先将左子树入队
            }
            if(node->rchild){
                nodeQueue.push(node->rchild);  //再将右子树入队
            }
        }
    }

    完整代码:

    /**
     * <!--
     * File   : binarytree.h
     * Author : fancy
     * Email  : fancydeepin@yeah.net
     * Date   : 2013-02-03
     * --!>
     */
    #include <stdio.h>
    #include <stdlib.h>
    #include <malloc.h>
    #include <Stack>
    #include <Queue>
    using namespace std;
    #define Element char
    #define format "%c"
    
    typedef struct Node {
        Element data;
        struct Node *lchild;
        struct Node *rchild;
    } *Tree;
    
    int index = 0;  //全局索引变量
    
    //二叉树构造器,按先序遍历顺序构造二叉树
    //无左子树或右子树用'#'表示
    void treeNodeConstructor(Tree &root, Element data[]){
        Element e = data[index++];
        if(e == '#'){
            root = NULL;
        }else{
            root = (Node *)malloc(sizeof(Node));
            root->data = e;
            treeNodeConstructor(root->lchild, data);  //递归构建左子树
            treeNodeConstructor(root->rchild, data);  //递归构建右子树
        }
    }
    
    //深度优先遍历
    void depthFirstSearch(Tree root){
        stack<Node *> nodeStack;  //使用C++的STL标准模板库
        nodeStack.push(root);
        Node *node;
        while(!nodeStack.empty()){
            node = nodeStack.top();
            printf(format, node->data);  //遍历根结点
            nodeStack.pop();
            if(node->rchild){
                nodeStack.push(node->rchild);  //先将右子树压栈
            }
            if(node->lchild){
                nodeStack.push(node->lchild);  //再将左子树压栈
            }
        }
    }
    
    //广度优先遍历
    void breadthFirstSearch(Tree root){
        queue<Node *> nodeQueue;  //使用C++的STL标准模板库
        nodeQueue.push(root);
        Node *node;
        while(!nodeQueue.empty()){
            node = nodeQueue.front();
            nodeQueue.pop();
            printf(format, node->data);
            if(node->lchild){
                nodeQueue.push(node->lchild);  //先将左子树入队
            }
            if(node->rchild){
                nodeQueue.push(node->rchild);  //再将右子树入队
            }
        }
    }
    
    
    
    
    /**
     * <!--
     * File   : BinaryTreeSearch.h
     * Author : fancy
     * Email  : fancydeepin@yeah.net
     * Date   : 2013-02-03
     * --!>
     */
    #include "binarytree.h"
    
    int main() {
    
        //上图所示的二叉树先序遍历序列,其中用'#'表示结点无左子树或无右子树
        Element data[15] = {'A', 'B', 'D', '#', '#', 'E', '#', '#', 'C', 'F','#', '#', 'G', '#', '#'};
        Tree tree;
        treeNodeConstructor(tree, data);
        printf("深度优先遍历二叉树结果: ");
        depthFirstSearch(tree);
        printf("\n\n广度优先遍历二叉树结果: ");
        breadthFirstSearch(tree);
        return 0;
    
    }

     

     

     

     

    展开全文
  • pbootcms内核开发的网站模板,该模板适用于手机APP网站、游戏软件网站等企业,当然其他行业也可以做,只需要把文字图片换成其他行业的即可; 自适应,同一个后台,数据即时同步,简单适用!附带测试数据! 友好的...
  • 用户可以根据需求在驱动库里选择相对应的通讯驱动程序,配置相应的通讯握手参数,自由定义需要控制和采集的变量名、通讯地址、数据类型和初始值。功能说明及图片展示: 1.安装完成首次进入将会显示三页功能简要展示...
  • charles 抓包修改app页面数据

    千次阅读 2020-12-09 23:53:14
    1,首先给手机安装Charles证书,安装官方的来,在无线网配置项目...3,模拟实战,将雪球app中 股票名称修改为超长字符,验证 app的样式容错问题 打开Charles的工具栏,选择重写 选择添加 ,位置选择空,意思...
  • pbootcms内核开发的网站模板,该模板适用于手机APP网站、游戏软件网站等企业, 当然其他行业也可以做,只需要把文字图片换成其他行业的即可; 模板特点 1:手工书写DIV+CSS、代码精简无冗余。 2:自适应结构,...
  • pbootcms内核开发的网站模板,该模板适用于手机APP网站、游戏软件网站等企业,当然其他行业也可以做,只需要把文字图片换成其他行业的即可; 自适应,同一个后台,数据即时同步,简单适用!附带测试数据! 友好的...
  • 如何利用fiddler监听手机APP数据

    千次阅读 2020-03-28 17:05:50
    这里主要介绍fiddler的安装与使用,本文采用的不是真的手机,而是采用的手机模拟器(这里使用的是雷电模拟器),利用真实的手机来抓包,操作方法大同小异 一.Fiddler安装 1.打开官网,官网下载地址是...
  • 在学习爬虫进阶路上少不了用到一些抓...但是对于 APP 爬虫,就显得有些束手无策。这时候必须借用一些抓包工具来辅助我们分析APP背后的秘密。而抓包本质是引入多了一层中间人代理,如下图所示。 补充一个知识点,对于新
  • 教大家搭建一个手机app软件导航网

    千次阅读 2021-11-27 14:32:52
    今天教大家搭建一个手机app软件导航网 1、服务器基础环境 服务器宝塔界面安装Nginx 1.20.1 + php 5.6 +mysql 5.6.50 ​2、上传手机app软件导航网源码,源码上传后解压 3、导入数据库文件,不要修改 4、访问网站,...
  • 如何进行手机APP数据爬取?

    千次阅读 2018-12-16 14:44:52
    平时我们的爬虫多是针对网页的,但是随着手机APP应用数量的增多,相应的爬取需求也就越来越多,因此手机APP数据爬取对于一名爬虫工程师来说是一项必备的技能。我们知道,网页爬取的时候我经常使用F12开发者...
  • 随着科技的发展,购物、旅游、支付等日常衣食住行活动都离不开手机,由此衍生了很多APP。比如每天使用频率非常高的微信、支付宝、微博、抖音、王者荣耀等等。APP测试主要进行功能测试、性能测试、自动化测试、安全性...
  • 简单几步教你爬取IOS手机APP数据

    千次阅读 2019-09-25 14:46:56
    作为一名“数据狗”和“码字狗”,手机APP数据爬取应该是一项基础技能。其实随着手机的广泛使用,不管是谁,懂点爬取的知识都不吃亏,毕竟“技多不压身”嘛。今天分享的爬取工...
  • 突发奇想,想尝试更改自己常用...(注意这样生成的.apk文件是未签名的安装包,手机是无法下载未签名的软件的)第二步就是通过一些手段为你所修改APP签名。接着就可以重新下载你修改过的APP了。 这里分步骤为大家介
  • 大厂的流行App都用技术手段检测手机硬件环境,标识用户的唯一性。这样的技术手段有两个目的,一个是为了更加精准的广告投放,另外一个原因是防止被薅羊毛等。其实无论是那种目的都是对个人隐私的侵犯。从Android10...
  • Fiddler是强大的抓包工具,它的原理是以web代理服务器的形式进行工作的,使用的代理地址是:127.0.0.1,端口默认为8888,我们也可以通过设置进行修改。 代理就是在客户端和服务器之间设置一道关卡,客户端先将请求...
  • 抓取手机APP上的数据 接下来,我们打开我们手机上的王者营地,有时可能电脑的网络不足以连上,可以先切换到自己的手机网络,进入到此界面中,然后换回电脑上的网络(即WiFi),再点击下面的全部 进入到我们的英雄...
  • Python爬取手机APP上面的数据

    千次阅读 2018-12-31 15:50:47
    在我们在爬取手机APP上面的数据的时候,都会借助Fidder来爬取。今天就教大家如何爬取手机APP上面的数据。 环境配置 1、Fidder的安装和配置 下载Fidder软件地址:https://www.telerik.com/download/fiddler ...
  • iPhone 有些时候不知道什么原因 一些APP会打不开无线数据 就是你设置了 然后打开软件 一看无法联网 切换到设置一看 自己 关闭了。网上有很多方法根本不管用 最后告诉大家一个简单完美解决的方法 设置---通用---拉到...
  • 小编介绍过很多在网页上面爬取数据的案例,很多人就问小编了,手机APP上面的数据可不可以爬取呢? 答案肯定是:当然可以啊~ 环境配置 1、Fidder的安装和配置 下载Fidder软件地址:...
  • 使用手机抓包工具(如mitmproxy)抓取手机数据时,点开app显示网络未连接/网络异常等,电脑端显示clientdisconnect,浏览器网络可用。 二、原因: 证书问题。 证书虽然导入了手机并设置了信任,但是app还设置了内置...
  • 改变Android手机软件安装位置方法

    千次阅读 2021-06-08 04:20:59
    谷歌Android系统手机默认只能把软件安装在手机内存里,使本来就不大的手机内存显得捉襟见肘。如果你也是个手机软件狂人,喜欢尝试各种各样新奇有趣的软件,面对越来越少的手机内存空间,不得不对已经安装的软件痛下*...
  • 手机APP应用软件开发

    千次阅读 2018-01-19 10:18:16
    App是application的缩写,通常专指手机上的应用软件,或称手机客户端。另外目前有很多在线app开发平台。 当然移动互联网时代是全民的移动互联网时代,是每个人的时代,也是每个企业的时代。APP便捷了每个人的生活...
  • 一、需求 为了降低stm32单片机在非工作状态下的功耗,需要实现通过手机软件,tong'g 二、硬件电路 三、软件 四、实现效果

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 50,822
精华内容 20,328
热门标签
关键字:

修改手机app数据的软件

友情链接: test_nano.rar