Contents
  1. 1. 前言
  2. 2. requests库
    1. 2.1. $_GET方式提交请求
    2. 2.2. $_POST提交请求
    3. 2.3. session()
    4. 2.4. json()
    5. 2.5. 实践一下
  3. 3. multipocessing
    1. 3.1. process_1
    2. 3.2. process_2

前言

在安全牛上学的,都是些基础的,来整理一下。

requests库

requests是python实现的简单易用的HTTP库,使用起来比urllib简洁很多,因为是第三方库,所以使用前需要cmd安装
pip install requests 安装requests库

具体信息看注释。

$_GET方式提交请求

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
import requests

url="http://baidu.com"

proxies={ #代理,配合bp使用
"http":"http://127.0.0.1:8080",
"https":"http://127.0.0.1:8080",
}

#添加header头,可以伪造X-Forwarded-for
headers={'user-agent':'my-hahaha/0.0.1','lala':'hello world'}

#修改cookie
cookies=dict(cookies_are='working')

r=requests.get(url,verify=False,proxies=proxies,headers=headers,cookies=cookies)

print(r.text) #都可以返回结果,但是text碰到中文,可能出现乱码
print(r.content) #推荐content

f=open("C:/Users/17295/Desktop/py.txt","wb+")
f.write(r.content)
f.close() #保存成文件

print(r.request.headers) #查看请求头
print(r.headers) #查看返回包的响应头
print(r.cookies) #查看cookie

print(r.encoding) #查看编码格式
r.encoding="UTF-8" #改变编码格式



print(r.status_code) #响应码200为正常响应,301是跳转,403权限不足,500+服务器错误

$_POST提交请求

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
import requests

url="https://account.tophant.com/login.html?response_type=code&client_id=b611bfe4ef417dbc&state=2e509c092de6ba1bf39a6fff76dd9a76"

proxies={ #代理
"http":"http://127.0.0.1:8080",
"https":"http://127.0.0.1:8080",
}


headers={'user-agent':'my-hahaha/0.0.1','lala':'hello world'}
cookies=dict(cookies_are='working')
payload={'name':'loop','age':12}


r=requests.post(url,verify=False,data=payload,proxies=proxies,headers=headers,cookies=cookies)

print(r.content)

session()

1
2
3
4
5
6
7
8
9
10
11
12
# coding:utf-8
# Build By LandGrey

import requests

coon=requests.session() #会创建一个对象,这个对象每次的请求都是同一个cookie值,不会新生成
url="http://www.baidu.com"
r=coon.get(url)
r.request.headers

r=coon.get(url)
r.request.headers

json()

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#coding:utf-8

import json #json作用

_dic={"name":"loop","age":"12"}

print(_dic)
print(type(_dic))

s=json.dumps(_dic,indent=2) #indent是缩进,json()的作用是序列化,字典变成字符串

print(s)
print(type(s))

d=json.load(s) #序列变成字典
print(d)
print(type(d))

实践一下

搜索github API中的信息

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#coding:utf-8

import requests #搜索github API中的信息
import json

if __name__=="__main__":

key="baidu"

url="https://api.github.com/search/code?q=%s" % key

TOKEN='a9275dcdf30cc646fcf7df7569375b260105a059' #https://blog.csdn.net/u014175572/article/details/55510825 拿到token的方法

headers={"Authorization":"token %s" % TOKEN}
params={"per_page":10,"page":0}

r=requests.get(url,headers=headers,params=params)

d=r.json()

print(json.dumps(d,indent=4))

multipocessing

process_1

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#coding:utf-8

import multiprocessing #进程
import time

def worker(interval):
n=5
while n>0:
print("The time is {0}".format(time.ctime()))
time.sleep(interval)
n-=1;

if __name__=="__main__":
p=multiprocessing.Process(target=worker,args=(3,)) #固定格式,args是参数
p.start()
print("p.pid",p.pid) #进程id
print("p.name",p.name)
print("p.is_alive",p.is_alive)

process_2

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#coding:utf-8

import multiprocessing #多进程
import time

def worker_1(interval):
print("worker_1")
time.sleep(interval)
print("end worker_1")

def worker_2(interval):
print("worker_2")
time.sleep(interval)
print("end worker_2")

def worker_3(interval):
print("worker_3")
time.sleep(interval)
print("end worker_3")

if __name__=="__main__":
p1=multiprocessing.Process(target=worker_1,args=(2,))
p2=multiprocessing.Process(target=worker_2,args=(3,))
p3=multiprocessing.Process(target=worker_3,args=(4,))

p1.start()
p2.start()
p3.start()

print("The number of cpu is:"+str(multiprocessing.cpu_count()))

for p in multiprocessing.active_children():
print("chile p.name"+p.name+"\tp.id:"+str(p.pid))
print("END!!!!!!!!!!!!!")
Contents
  1. 1. 前言
  2. 2. requests库
    1. 2.1. $_GET方式提交请求
    2. 2.2. $_POST提交请求
    3. 2.3. session()
    4. 2.4. json()
    5. 2.5. 实践一下
  3. 3. multipocessing
    1. 3.1. process_1
    2. 3.2. process_2