Requests 方法 -- post请求操作实践

1、登录Jenkins抓包 ,小编的Jenkins部署在Tomcat上,把Jenkins.war 包放置到webapps目录。

本次用浏览器自带抓包,按下F12操作,主要看post就可以,登录是向服务器提交表单操作,则为post请求如下:

2、body里面并不是json格式的,而是application/x-www-form-urlencoded,部分请求截图如下:

3、实现登录代母如下:

import requests# 先打开登录首页,获取部分 cookieurl1 = "http://localhost:8081/jenkins/j_acegi_security_check"headers = {    "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3",    "Accept-Encoding": "gzip, deflate, br",    "Content-Type": "application/x-www-form-urlencoded",    "Cookie": "screenResolution=1366x768; JSESSIONID=7B7F3F66948B1965ADDD332E5425A7F4; Pycharm-470d2d8b=7eb39a7e-c2b5-41ac-95f2-ee8fdf8f2188; jenkins-timestamper-offset=-28800000; csrftoken=qsBdlvEy1RoGOFiUqpvowtF9bkeP8XAXbZAhrZnOBqgwqmX3AA6TCxHFkAPSqBsN; hudson_auto_refresh=true; _ga=GA1.1.1092626020.1560260048; ACEGI_SECURITY_HASHED_REMEMBER_ME_COOKIE=YWRtaW46MTU2Mjc2NjkzMTQzODo1ODAxZTNhNDExMDlkODU1ZjFkZWIzZDg1ZGQxNWY4ZjA3NDExMmY2MDJlZDg4YzhlYmQ4YWZhYzMxYTc2OWY3; Pycharm-b245d0ed=4a1ebe68-e0eb-4b41-b28d-d0edee006e77",    "Origin": "http://localhost:8081",    "Referer": "http://localhost:8081/jenkins/login?from=%2Fjenkins%2F",    "User-Agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36"}

form_data = {    "j_username":" 自己的账号",    "j_password": "自己的密码",    "from": "/jenkins/",    "Submit": "登录",    "remember_me": "on"}

r = requests.post(url=url1,headers=headers,data=form_data,verify=False)# session 会话# s = requests.session()print(r.text)

4、返回的结果并不是json的格式,而是HTML格式,这里只截图部分的html结果

5、也可以用正则表达式进行提取是否登录成功,这里截取HTML的两个关键字 ,代码如下:

import requests# 先打开登录首页,获取部分 cookieurl1 = "http://localhost:8081/jenkins/j_acegi_security_check"headers = {    "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3",    "Accept-Encoding": "gzip, deflate, br",    "Content-Type": "application/x-www-form-urlencoded",    "Cookie": "screenResolution=1366x768; JSESSIONID=7B7F3F66948B1965ADDD332E5425A7F4; Pycharm-470d2d8b=7eb39a7e-c2b5-41ac-95f2-ee8fdf8f2188; jenkins-timestamper-offset=-28800000; csrftoken=qsBdlvEy1RoGOFiUqpvowtF9bkeP8XAXbZAhrZnOBqgwqmX3AA6TCxHFkAPSqBsN; hudson_auto_refresh=true; _ga=GA1.1.1092626020.1560260048; ACEGI_SECURITY_HASHED_REMEMBER_ME_COOKIE=YWRtaW46MTU2Mjc2NjkzMTQzODo1ODAxZTNhNDExMDlkODU1ZjFkZWIzZDg1ZGQxNWY4ZjA3NDExMmY2MDJlZDg4YzhlYmQ4YWZhYzMxYTc2OWY3; Pycharm-b245d0ed=4a1ebe68-e0eb-4b41-b28d-d0edee006e77",    "Origin": "http://localhost:8081",    "Referer": "http://localhost:8081/jenkins/login?from=%2Fjenkins%2F",    "User-Agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36"}

form_data = {    "j_username":" 自己的账号",    "j_password": "自己的密码",    "from": "/jenkins/",    "Submit": "登录",    "remember_me": "on"}

r = requests.post(url=url1,headers=headers,data=form_data,verify=False)# session 会话# s = requests.session()print(r.text)

# 正则表达式提取账号和登录按钮import ret = re.findall("<b>(.+?)</b>",r.content.decode("utf-8")) #由于是编码格式,所以要进行decode解码print(t[0])print(t[1])

运行的结果为 1.自己的账号名 2.注销 。

6、复制出html页面到 http://www.kjson.com/xml/ 中进行解析下,有层次感。



原文地址:https://www.cnblogs.com/Teachertao/p/11143431.html

时间: 2024-07-31 13:11:09

Requests 方法 -- post请求操作实践的相关文章

python requests方法post请求json格式处理

方法如下: import requestsimport json data = {    'a': 123,    'b': 456} ## headers中添加上content-type这个参数,指定为json格式headers = {'Content-Type': 'application/json'} ## post的时候,将data字典形式的参数用json包转换成json格式.response = requests.post(url='url', headers=headers, dat

Requests方法 -- 参数关联

一.删除草稿箱1.参数这篇https://www.cnblogs.com/Teachertao/p/11144726.html 2.删除刚才保存的草稿 3.用 fiddler 抓包,抓到删除帖子的请求,从抓包结果可以看出,传的 json 参数是 postId 4.这个 postId 哪里来的呢?可以看上个请求 url 地址 5.也就是说保存草稿箱成功之后,重定向一个 url 地址,里面带有 postId 这个参数.那接下来我们提取出来就可以了 二.提取参数1.我们需要的参数 postId 是在保

python利用requests模拟http请求及请求头

一.通过requests发送请求 之前一直使用urllib以及urllib2模拟http请求发送,在实际场景中,我们需要造自己定义好的header.body等等,使用urllib很麻烦,很偶然的机会,接触到了requests,可以通过发送xml.简单易用,直接上代码: requests  connected():          #通过形参传入url以及请求参数,get方法发送请求     (param):         get = requests.get(==param)        

【译】JavaScript 创建对象: 方法一览与最佳实践

本文是我在众成翻译上认领并翻译的:JavaScript 创建对象: 方法一览与最佳实践 在JavaScript中“创建对象”是一个复杂的话题.这门语言提供了很多种创建对象的方式,不论新手还是老手都可能对此感到无所适从,不知道应该选择哪一种.不过,尽管创建对象的方法很多,看上去语法差异也很大,但实际上它们的相似性可能比你所以为的要多.本文将带领你踏上一段梳理对象创建方法的旅程,为你揭示不同方法之间的依赖与递进关系. 对象字面量 我们的第一站毫无疑问就是创建对象最简单的方法,对象字面量.JavaSc

字符集与字符编码的强化理解与操作实践

字符集与字符编码的强化理解与操作实践 踩坑 最近在工作中遇到了一个说大不大说小不小的问题,就是当我解析一个xml文件的时候,抛出了一个"Invalid byte 2 of 2-byte UTF-8 sequence"的异常,这个异常会导致解析直接退出,显然不能容忍.查阅相关资料稍微定位了一下,大概知道是字符集的问题,仔细一看,xml文件中的确有中文字符,而且当我把这些中文字符删了之后的确又能解析成功.不过我还是不能理解这当中的缘由,不过由于时间原因,当时只是把中文字符删了就草草完工.现

Nginx反向绑定域名方法和详细操作应用实例:Google和Gravatar

反向绑定域名,即将域名B绑定到域名A上,用户只要访问B就等同于进入A,内容都是由A提供,它有点像建立了一个A的镜像.什么时候要用到反向绑定域名?服务器集群和网站负载均衡时,把用户访问请求发送不同的服务器上. 关于反向绑定域名的方法部落之前也分享过好几次,本篇文章就来详细介绍一下Nginx反向绑定域名方法.之所以要用Nginx,主要在于Nginx在反向绑定域名有着天然的优势,并且功能强大,可以满足我们更多更高的应用需求. 平常我们都是用Nginx反向绑定域名来搞定无法绑定域名的空间,这次来分享一下

Requests方法 -- post

>>> import requests  导入requests库 >>> help(requests)  #查看requests方法Help on package requests: NAME requests DESCRIPTION Requests HTTP Library ~~~~~~~~~~~~~~~~~~~~~ Requests is an HTTP library, written in Python, for human beings. Basic GET

Requests方法 --- json模块

1.Json 简介:Json,全名 JavaScript Object Notation,是一种轻量级的数据交换格式,常用于 http 请求中 2.可以用 help(json),查看对应的源码注释内容 Encoding basic Python object hierarchies::>>> import json>>> json.dumps(['foo', {'bar': ('baz', None, 1.0, 2)}])'["foo", {&quo

Requests方法 -- 参数化

import requests#禁用安全请求警告from requests.packages.urllib3.exceptions import InsecureRequestWarningrequests.packages.urllib3.disable_warnings(InsecureRequestWarning)"""1.由于登录时候是多加 2 个 cookie,我们可以先用 get 方法打开登录首页,获取部分 cookie2.再把登录需要的 cookie 添加到 s