基于frida的objection工具的使用
摘录http://strivemario.work/archives/8eec80c3.html 官方仓库: objection 安装前置条件121. python版本 > 3.42. pip版本 > 9.0 安装命令1pip3 install objection 安装完成后, 直接输入objection, 就可以看到食用方法了 简单使用一下CmdLine: 123456789101112131415161718192021222324252627282930313233343536373839Usage: objection [OPTIONS] COMMAND [ARGS]... _ _ _ _ ___| |_|_|___ ___| |_|_|___ ___ | . | . | | -_| _| _| | . | | |___|___| |___|___|_| |_|___|_|_| |___|(object)inject(ion) Runtime Mobile Explorat...
Flask的request对象和数据渲染
request对象的属性from flask import request path:base_url full_path:url host:url_root host_url args:Werkzeug的ImmutableMultiDict对象。存储解析后的查询字符串,可通过字典方式获取键值。如果你想获取未解析的原生查询字符串,可以用query_string属性 blueprint:当前蓝本的名称 cookies:一个包含所有随请求提交的cookies的字典 data:包含字符串形式的请求数据 endpoint:于当前请求相匹配的端点值 files:Werkzeug的MultiDict对象,包含所有上传文件,可以使用字典的形式获取文件。使用的键为文件input标签中的name值,对应的值为Werkzeug的FileStorage对象。可以调用save()方法并传入保存路径来保存文件 form:Werkzeug的ImmutableMultiDict对象。于files类似,包含解析后的表单数据。表单字段值通过input标签的name属性值作为键获...
Flask的路由和蓝图:查看所有的路由的路径
查看所有的路由的路径1.flask routes 命令行 1234Endpoint Methods Rule----------- ------- ----------------hello_world GET /static GET /<path:filename> 2.app.url_map代码中 1Map([<Rule '/static/<filename>' (GET, OPTIONS, HEAD) -> static>]) url路由转换器普通的转换器默认是str类型 123@app.route('/user/<id>')def hello_world(id): return f'Hello {id}!' 带类型的转换器 12345678910111213# # 默认转换器# DEFAULT_CONVERTERS = {# 'default'...
Flask的异常处理:abort函数和自定义错误信息
abort函数和自定义错误信息abort()函数可以传递两种方式 一种是传递状态码信息,例如:abort(404) ,前端就会报出已经默认好的404错误信息 另外一种方式是传递响应体的信息,abort(Response(“内容”)),Response() ,里面的信息会在前端上面显示出来 自定义错误信息,用装饰器定义一个视图函数 这个函数的返回值会是前端所看到的最终的结果,这个视图函数的装饰器来定义错误的类型 @app.errorhandler(404) # 定义404的错误类型 自定义的错误类型,可以是状态码,可以是异常类名称(例如:ZeroDivisionError)
Flask的请求上下文和钩子:请求钩子
请求钩子 before_first_request 在处理第一个请求前执行 before_request 在每次请求前执行 如果在某修饰的函数中返回了一个响应,视图函数将不再被调用. after_request 如果没有抛出错误,在每次请求后执行 接受一个参数︰视图函数作出的响应 在此函数中可以对响应值在返回之前做最后一步修改处理。 需要将参数中的响应在此参数中进行返回 teardown_request : 在每次请求后执行 接受一个参数:错误信息,如果有相关错误抛出 上下文 current_app 程序上下文,当前激活程序的程序的实例 g 程序上下文,处理请求时用作临时存储的对象。每次请求会重设这个对象 request 请求上下文,请求对象,封装了客户端发出的http请求的内容 session 请求上下文,用户会话
认识flask的app:flask简介
flask简介Flask是使用Python编写的Web微框架。Web框架可以让我们不用关心底层的请求响应处理,更方便高效地编写Web程序。因为Flask核心简单且易于扩展,所以被称作微框架(micro framework)。Flask有两个主要依赖,一个是WSGI(Web Server Gateway Interface,Web服务器网关接口)工具集——Werkzeug(http://werkzeug.pocoo.org/),另一个是Jinja2模板引擎(http://jinja.pocoo.org/)。Flask只保留了Web开发的核心功能,其他的功能都由外部扩展来实现,比如数据库集成、表单认证、文件上传等。如果没有合适的扩展,你甚至可以自己动手开发。Flask不会替你做决定,也不会限制你的选择。总之,Flask可以变成任何你想要的东西,一切都由你做主。 官方文档:https://dormousehole.readthedocs.io/en/latest/ 简单的demo1234567891011121314151617181920212223242526from flask ...
Python开发环境:python的环境
python开发环境python的环境envThe venv module provides support for creating lightweight “virtual environments” with their own site directories, optionally isolated from system site directories. Each virtual environment has its own Python binary (which matches the version of the binary that was used to create this environment) and can have its own independent set of installed Python packages in its site directories. Venv 模块支持创建具有自己站点目录的轻量级“虚拟环境” ,可以选择从系统站点目录中隔离出来。每个虚拟环境都有自己的 Python 二进制文件(与用于创建此环境的二进制文...
分治算法:分治算法(Divide ans conquer …
分治算法(Divide ans conquer ,D&C)前言我之前看算法图解这本书,看他讲分治算法有一个很好的例子,我觉得这个例子让我理解分治的思想。 有一个农场主,想把一块长为168m,宽为64m的土地均匀的分成方块,要求分出的方块尽可能的最大。 1.首先的想法就是想划分一个最大的方块看行不行,以宽64m为边长,肯定是最大的方块。但是这样会剩下 40m的土地无法分割,于是转换思路。 2.把剩下的土地(40*64),在细分,适用于这小块的地方的最大的块也是适用于整块土地。后面这句话不好理解,于是我去查阅了欧几里得算法。 欧几里德算法(Euclidean algorithm),是求最大公约数的一种方法。它的具体做法是:用较大数除以较小数,再用出现的余数(第一余数)去除除数,再用出现的余数(第二余数)去除第一余数,如此反复,直到最后余数是0为止。如果是求两个数的最大公约数,那么最后的除数就是这两个数的最大公约数。直接看下面的例子就懂了: 先看几个概念: 公约数,亦称“公因数”。它是指能同时整除几个整数的数。 公约数中最大的称为最大公约数 求104和40的最大公约数 1234...
Python单链表的表示:单链表
单链表单链表是一种链式存取的数据结构,用一组地址任意的存储单元存放线性表中的数据元素。链表中的数据是以结点来表示的,每个结点的构成:元素(数据元素的映象) + 指针(指示后继元素存储位置),元素就是存储数据的存储单元,指针就是连接每个结点的地址数据。– 百度百科 python单链表的定义12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364class Node(object): """ 单链表的节点定义 """ def __init__(self, item): self.item = item # 表示数据元素 self.next = None # 表示指针class SingleLinkList(object): """ 头结点记录链表的长...
Scrapy的Spider类:scrapy的Spider类
scrapy的Spider类Spider:scrapy.Spider, 是所有 Spider 的基类,它是最基础的爬虫,所有的 spider 都会继承 scrapy.Spider。它提供了 start_requests() 的默认实现,读取并请求 spider 属性中的 start_urls,并根据返回的 response 调用 spider 中的 parse 方法。 spiders(Lib\site-packages\scrapy\spiders) 12345├── __init__.py├── crawl.py├── feed.py├── init.py└── sitemap.py 自定义爬虫类1234567891011import scrapyclass TemplateSpidersSpider(scrapy.Spider): name = 'template_spiders' allowed_domains = ['*'] start_urls = ['http://*/'] def ...