分析post与json
寻找登录的post地址
在form表单中寻找action对应的url地址
post的数据是input标签中name的值作为键,真正的用户名密码作为值的字典,post的url地址就是action对应的url地址
抓包,寻找登录的url地址
勾选perserve log按钮,防止页面跳转找不到url
寻找post数据,确定参数
参数不会变,直接用,比如密码不是动态加密的时候
参数会变
参数在当前的响应中
通过js生成
定位想要的js
选择会触发js时间的按钮,点击event listener,找到js的位置
通过chrome中的search all file来搜索url中关键字
添加断点的方式来查看js的操作,通过python来进行同样的操作
安装第三方模块 (用于刷新网页)
pip install retrying
下载源码解码,进入解压后的目录,
python setup.py install***.whl安装方法pip install ***.whl
-----------------------------------------------------------
、reqeusts.util.dict_from_cookiejar 把cookie对象转化为字典
1.1. requests.get(url,cookies={})
、请求 SSL证书验证
response = requests.get("https://www.12306.cn/mormhweb/ ", verify=False)
、设置超时
response = requests.get(url,)
、配合状态码判断是否请求成功
assert response.status_code ==
下面我们通过一个例子整体来看一下以上4点的用法
# coding=utf-8
import requests
from retrying import retry headers={"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.84 Safari/537.36"} @retry(stop_max_attempt_number=3)
def _parse_url(url,method,data,proxies):
print("*"*20)
if method=="POST":
response = requests.post(url,data=data,headers=headers,proxies=proxies)
else:
response = requests.get(url,headers=headers,timeout=3,proxies=proxies)
assert response.status_code == 200
return response.content.decode() def parse_url(url,method="GET",data=None,proxies={}):
try:
html_str = _parse_url(url,method,data,proxies)
except:
html_str = None return html_str if __name__ == '__main__':
url = "www.baidu.com"
print(parse_url(url))
--------------------
In []: import requests
In []: response = requests.get('http://www.baidu.com')
In []: response.cookies
Out[]: <RequestsCookieJar[Cookie(version=, name='BDORZ', value='', port=N
one, port_specified=False, domain='.baidu.com', domain_specified=True, domain_in
itial_dot=True, path='/', path_specified=True, secure=False, expires=,
discard=False, comment=None, comment_url=None, rest={}, rfc2109=False)]>
In []: requests.utils.dict_from_cookiejar(response.cookies)
Out[]: {'BDORZ': ''}
In []: requests.utils.cookiejar_from_dict({'BDORZ': ''})
Out[]: <RequestsCookieJar[Cookie(version=, name='BDORZ', value='', port=N
one, port_specified=False, domain='', domain_specified=False, domain_initial_dot
=False, path='/', path_specified=True, secure=False, expires=None, discard=True,
comment=None, comment_url=None, rest={'HttpOnly': None}, rfc2109=False)]>
In []: requests.utils.quote('http://tieba.baidu.com/f?kw=李颜')
Out[]: 'http%3A//tieba.baidu.com/f%3Fkw%3D%E6%9D%8E%E9%A2%9C'
In []: requests.utils.unquote('http%3A//tieba.baidu.com/f%3Fkw%3D%E6%9D%8E%E9%
...: A2%9C')
Out[]: 'http://tieba.baidu.com/f?kw=李颜'
json使用注意点
json中的字符串都是双引号引起来的
如果不是双引号
eval:能实现简单的字符串和python类型的转化
replace:把单引号替换为双引号
往一个文件中写入多个json串,不再是一个json串,不能直接读取
一行写一个json串,按照行来读取
分析post与json的更多相关文章
- elk 入门 - 分析nginx日志 + json格式 + 有调试的意识 + elk7.2.0
1.本次采用的一台主机,将所有的软件安装一台上进行测试工作. 2.安装部署:https://blog.51cto.com/hwg1227/2299995 3.简单调试 输出rubydebug inpu ...
- android应用:TVlauncher源码分析之Androidmanifest.json
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="ht ...
- SQL Server2016 原生支持JSON
SQL Server2016 原生支持JSON SQL Server 2005 开始支持 XML 数据类型,提供原生的 XML数据类型.XML 索引以及各种管理 XML 或输出 XML 格式的函数. ...
- Delphi XE6 原生解析json
Delphi XE5带了system.json单元,原生提供了json支持类.下面是解析json用法说明: 最简单的JSON大致像这样 { "date":"周二(今天, ...
- Android学习笔记之Fast Json的使用
PS:最近这两天发现了Fast Json 感觉实在是强大.. 学习内容: 1.什么是Fast Json 2.如何使用Fast Json 3.Fast Json的相关原理 4.Fast Json的优势, ...
- JSON数据解析(转)
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,采用完全独立于语言的文本格式,为Web应用开发提供了一种理想的数据交换格式. 本文将主要介绍在Android ...
- [转]asp.net的ajax以及json
本文转自:http://www.cnblogs.com/ensleep/p/3319756.html 来现在这家公司以前,从未接触过webform,以前在学校做的项目是php,java以及asp.ne ...
- C#实现中国天气网JSON接口测试
接上一篇,经过反复的查看,最终从这篇文章中找到了一个可用的JSON接口,于是研究了一下中国天气网JSON接口的测试: 和上一篇XML接口测试的原理是一样的,只是需要安装一下Newtonsoft.Jso ...
- Android学习笔记之JSON数据解析
转载:Android学习笔记44:JSON数据解析 JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,采用完全独立于语言的文本格式,为Web应用开发提供了一种 ...
随机推荐
- ubuntu16.04安装python虚拟环境
自己也是搜的教程,亲测有效 ubuntu16.04创建虚拟环境 一.linux环境 Ubuntu16.04 二.安装和配置虚拟环境 安装虚拟环境 sudo pip install virtualenv ...
- python--包的导入
1,包 定义:把解决一类问题的模块放在同一个文件夹里 导入语法:在import from...import导入语句中(而不是在使用时)遇到带点的 本质:就是一个包含__init__.py文件的目 ...
- keepAlived主备及双主
nginx用默认配置即可 1.主备配置 1.主keepAlived配置 vrrp_instance VI_1 { state MASTER #主备区分 interface eth0 virtual_r ...
- Java 四种内部类
静态内部类:类中静态类 成员内部类:类中非静态类 局部内部类:类中方法中有名字的类 匿名内部类:类中方法中无名的类 引言:在Java中通常情况下,一个类中会有属性和方法,但还可以包含内部类,内部类可以 ...
- udp - IPv4 上面的 UDP 协议.
SYNOPSIS (总览) #include <sys/socket.h> #include <netinet/in.h> udp_socket = socket(PF_INE ...
- usleep - 睡眠若干微秒
总览 (SYNOPSIS) usleep [number] 描述 (DESCRIPTION) usleep 睡眠 指定的 微秒数. 缺省值 是 1. 选项 (OPTIONS) --usage 显示 简 ...
- Peasy.NET学习之并发问题处理
Peasy.net之并发处理 BusinessServiceBase是ServiceBase的自定义实现,提供了额外的独特功能 首先,创建一个业务服务,该业务服务必须继承BusinessService ...
- Codeforces 1140E DP
题意:给你一个数组,如果数组中的某个位置是-1那就可以填1到m的数字中的一个,但是要遵守一个规则:不能出现长度为奇数回文的子串,问合法的填法有多少种? 思路:不出现长度为奇数的回文子串,只需不出现长度 ...
- 泛型(Generic)类的使用原因和使用方式
我们每个苹果都套个盒子,给每本书都套个盒子,但是苹果盒子和书盒子是不同的, 这样下去如果有更多的东西需要套盒子,1000种产品有1000种相应的盒子,造成类型极度膨胀非常难以维护. class Pro ...
- thinkphp 上传安全
网站的上传功能也是一个非常容易被攻击的入口,所以对上传功能的安全检查是尤其必要的. 大理石平台支架 系统提供的上传类Think\Upload提供了安全方面的支持,包括对文件后缀.文件类型.文件大小以及 ...