Python编写盲注脚本

Python基本语法:

条件判断语句

if True:
print("True")
print("ansewe")//同一个层次的代码缩进要一致,python语言用同缩进的多少表示是否为同一层次,是否为一个代码段
else:
print("False")
score = 87
if score >=90 and score <=100:
print("A")
elif score >=80 and <90:
print("B")

引入库(随机数)

import random
x = random.randint(0,2) #随机生成0 1 2
print("%d"%x)
x=input(请输入数字)
y=random.randint(0,2)
if x=y:
print(你们出的一样)
elif x=0 and y=1 :
print("我出的是剪刀,你输啦")

for循环

for完有一个冒号记得填写

for i in range(5)://循环从0开始一共五次
print(i)
for i in range (0,10,3)//循环从0开始一直到10 每次增加3
print(i)
for i in range (-10,-100,-30)//循环从-10开始一直到-100 每次减少30
print(i)

对于字符

name="chengdu"
for x in name:
print(x)//针对字符,输出的是chengdu(有换行),不换行加一个,end=''
a=["aa","bb","cc","dd"]
for i in range(len(a))
print(i,a[i])// 这里的len指的是输出a当中元素的个数,为四个所以循环为0-4,然后打印出来

while循环

i=0
while i<5:
print("当前是第%d次执行循环"%(i+1))
print("i=%d"%i)
i +=1
i=0
a=0
n=100
while i<=n:
a=a+i
i+=1

print("1-%d的和=%d"%(n,a)//1-100求和
count=0
while cout<5:
print(count,"小于5")
count +=1
else:
print(count,"大于或等于5")//不止是if可以加else while也可以
//输出结果:
0 小于5
1 小于5
2 小于5
3 小于5
4 小于5
5 大于或等于5

break/continue/pass

break:终止循环
continue:本次循环终止
pass:纯属占位

字符串

word='this'
sentence="this is a word"
paragraphy='''
this is a paragarphy
可以换行
'''
print(word)
print(sentence)
print(paragraphy)
//需要转义 的字符 \\ \' \"
字符串函数str
str="chengdu"
print(str[0:6:2])// str[起始位置:结束位置:步进值(可选,默认为1)]
字符串相连接
str="chengdu"
print(str+",你好")//打印chengdu,你好
print(str*3)//打印三次
print(r"hello\nchengdu")//前面有r 里面的内容会原样输出 比如\n就不会转义
字符串的常见操作

1.bytes.decode(encoding=”utf-8”, errors=”strict”
Python3 中没有 decode 方法,但我们可以使用 bytes 对象的 decode() 方法来解码给定的 bytes 对象,这个 bytes 对象可以由 str.encode() 来编码返回。
2.encode(encoding=’UTF-8’,errors=’strict’
以 encoding 指定的编码格式编码字符串,如果出错默认报一个ValueError 的异常,除非 errors 指定的是’ignore’或者’replace’
3.isalnum()
如果字符串至少有一个字符并且所有字符都是字母或数字则返 回 True,否则返回 False
4.isalpha()
如果字符串至少有一个字符并且所有字符都是字母或中文字则返回 True, 否则返回 False
5.isdigit()
如果字符串只包含数字则返回 True 否则返回 False
6.isnumeric()
如果字符串中只包含数字字符,则返回 True,否则返回 False
7.join(seq)
以指定字符串作为分隔符,将 seq 中所有的元素(的字符串表示)合并为一个新的字符串
8.len(string)
返回字符串长度
9.istrip()
截掉字符串左边的空格或指定字符
10rstrip()
删除字符串末尾的空格
11split(str=””, num=string.count(str))
以 str 为分隔符截取字符串,如果 num 有指定值,则仅截取 num+1 个子字符串

列表

定义+增加
namelist=[1,'huang',3]//定义一个列表
for name in namelist:
print(name) //遍历输出namelist
//使用while遍历输出数组
length=len(namelist)
i=0
while i<length:
print(namelist[i])
i+=1
//append在数字末尾增加一个值
//eg1.
nametemp=input("请输入数字:")
namelist.append(nametemp)
for num in namelist:
print(num)
eg2.
a=[1,2]
b=[3,4]
a.append(b)// 将列表当做一个元素加入到a列表中
//结果是 [1,2,[3,4]]
extend(b)
print(a)
//结果是[1,2,3,4]
//insert:指定下标位置插入元素
a=[0,1,2]
a.insert(1,3) #第一个变量表示小标,第二个变量表示元素(对象)
print(a)
删除
//del 在指定位置删除一个元素
a=[0,1,2]
del a[2]
for i in a:
print(i)
//pop() 弹出末尾最后一个元素
a.pop()
//remove 直接删除指定内容的元素
a.remove(1)//如果有重复的数据比如[0,1,1,2]只删除找到的第一个
更改
a=[1,1,1]
a[1]=2//直接改就行
查找
//使用条件判断语句
findnumeber=input("请输入你要查找的数字")
if findnumber in a:
print("在")
else:
print("不在")
//使用index函数
a=["a","b","c","a","b"]
print(a.index("a",1,4))//查找a这个元素在下标1-4都出现在哪里 结果返回的是数组下标,并且范围是左闭右开的
//使用count计数某个元素出现几次
print(mylist.count("c"))
拓展:
//排序和反转
a=[1,4,3,2,5]
a.reverse() //将列表所有元素反转
a.sort() //升序排序
a.sort(reverse=Ture)//降序排序
//类二位数组:
a=[[1,2],[3,4],[5,6]]
print(a[0])//输出[1,2]
print(a[0][0])//输出[1]

三个办公室,八个老师,随机分配到三个办公室并将其打印

import random
offices=[[],[],[]]
names=["a","b","c","d","e","f","g","h"]
for name in names:
index = random.randint(0,2)
offices[index].append(name)

i=1
for office in offices:
print("%d:%d"%(i,len(office)))
i+=1
for name in office:
print("%s"%name,end="\t")
print("\n")
print("-"*20)

元组

tup1=() //创建一个空的元组
tup2=(50)//此时不是元组 type为int
tup3=(50,)//加一个逗号才能表示他是一个元组

函数

//def:定义函数

Requests库学习

导入requests模块

import requests

然后,尝试获取某个页面

r = requests.get('url')//get请求
r = requests.post('url',data={'key'='value'})//post请求

其他HTTP请求类型也是如此

传递URL参数

在url中传递数据:

Requests 允许你使用 params 关键字参数,以一个字符串字典来提供这些参数。举例来说,如果你想传递 key1=value1key2=value2httpbin.org/get ,那么你可以使用如下代码:

payload = {'key1':'value1','key2':'value2'}
r = requests.get("http://httpbin.org/get",params=payload)

返回输出结果

print(r.url)
//http://httpbin.org/get?key2=value2&key1=value1

**ps:**字典里的none值得键不会被添加到URL的查询字符串中

响应内容

读取服务器响应的内容:

import requests
r = requests.get('URL')
r.text
print(r.text)

会话对象:

会话对象让你能够跨请求保持某些参数。它也会在同一个session实例发出的所有请求之间保持cookie。

跨请求保持一些cookie
s = requests.Session()
r = s.get("http://httpbin.org/cookies")
print(r.text)
# '{"cookies": {"sessioncookie": "123456789"}}'

参考文章:https://2.python-requests.org/zh_CN/latest/user/quickstart.html
https://2.python-requests.org/zh_CN/latest/user/advanced.html#advanced

python版本更换指令

py -2.7
py -3

1、字符串前加 f

字符串格式化(python 3.6 新增,类似于perl中的变量内插)

例: vers = ‘python 3.6’

f”该功能是{vers}新增”

返回:该功能是python 3.6新增

格式化的字符串文字前缀为”f”,类似str.format()。包含由花括号包围的替换区域。替换字段是表达式,在运行时进行评估,然后使用format()协议进行格式化。

2、字符串前加 u

例:u”我是含有中文字符组成的字符串。”

作用:后面字符串以 Unicode 格式 进行编码,一般用在中文字符串前面,防止因为源码储存格式问题,导致再次使用时出现乱码。

3、字符串前加 r

例:r”\n\t\n”

返回:\n\t\n

作用:声明后面的字符串是普通字符串,相对的,特殊字符串中含有:转义字符 \n \t 什么什么的。

4、字符串前加 b

作用:python3.x里默认的str是unicode类,

py2.x的str是 bytes类,

b“我(python 3)的str是 bytes” 代表的就是bytes类 。

python2.x里, b前缀没什么具体意义, 只是为了兼容python3.x的这种

Author

vague huang

Posted on

2020-12-24

Updated on

2021-06-11

Licensed under

Comments