基础知识积累

ASCII 设备控制字符

ASCII 控制字符(00-31,加上 127)最初被设计用来控制诸如打印机和磁带驱动器之类的硬件设备。

控制字符(除了水平制表符、换行、回车之外)在 HTML 文档中不起任何作用。

字符 编号 描述
NUL 00 空字符(null character)
SOH 01 标题开始(start of header)
STX 02 正文开始(start of text)
ETX 03 正文结束(end of text)
EOT 04 传输结束(end of transmission)
ENQ 05 请求(enquiry)
ACK 06 收到通知/响应(acknowledge)
BEL 07 响铃(bell)
BS 08 退格(backspace)
HT 09 水平制表符(horizontal tab)
LF 10 换行(line feed)
VT 11 垂直制表符(vertical tab)
FF 12 换页(form feed)
CR 13 回车(carriage return)
SO 14 不用切换(shift out)
SI 15 启用切换(shift in)
DLE 16 数据链路转义(data link escape)
DC1 17 设备控制 1(device control 1)
DC2 18 设备控制 2(device control 2)
DC3 19 设备控制 3(device control 3)
DC4 20 设备控制 4(device control 4)
NAK 21 拒绝接收/无响应(negative acknowledge)
SYN 22 同步空闲(synchronize)
ETB 23 传输块结束(end transmission block)
CAN 24 取消(cancel)
EM 25 已到介质末端/介质存储已满(end of medium)
SUB 26 替补/替换(substitute)
ESC 27 溢出/逃离/取消(escape)
FS 28 文件分隔符(file separator)
GS 29 组分隔符(group separator)
RS 30 记录分隔符(record separator)
US 31 单元分隔符(unit separator)
DEL 127 删除(delete)

ASCII 可打印的字符

字符 编号 描述
32 空格(space)
! 33 感叹号(exclamation mark)
34 引号(quotation mark)
# 35 数字符号(number sign)
$ 36 美元符号(dollar sign)
% 37 百分比符号(percent sign)
& 38 & 符号(ampersand)
39 撇号(apostrophe)
( 40 左括号(left parenthesis)
) 41 右括号(right parenthesis)
* 42 星号(asterisk)
+ 43 加号(plus sign)
, 44 逗号(comma)
- 45 连字符(hyphen)
. 46 句号(period)
/ 47 斜线(slash)
0 48 数字 0
1 49 数字 1
2 50 数字 2
3 51 数字 3
4 52 数字 4
5 53 数字 5
6 54 数字 6
7 55 数字 7
8 56 数字 8
9 57 数字 9
: 58 冒号(colon)
; 59 分号(semicolon)
< 60 小于号(less-than)
= 61 等于号(equals-to)
> 62 大于号(greater-than)
? 63 问号(question mark)
@ 64 @ 符号(at sign)
A 65 大写字母 A
B 66 大写字母 B
C 67 大写字母 C
D 68 大写字母 D
E 69 大写字母 E
F 70 大写字母 F
G 71 大写字母 G
H 72 大写字母 H
I 73 大写字母 I
J 74 大写字母 J
K 75 大写字母 K
L 76 大写字母 L
M 77 大写字母 M
N 78 大写字母 N
O 79 大写字母 O
P 80 大写字母 P
Q 81 大写字母 Q
R 82 大写字母 R
S 83 大写字母 S
T 84 大写字母 T
U 85 大写字母 U
V 86 大写字母 V
W 87 大写字母 W
X 88 大写字母 X
Y 89 大写字母 Y
Z 90 大写字母 Z
[ 91 左方括号(left square bracket)
\ 92 反斜线(backslash)
] 93 右方括号(right square bracket)
^ 94 插入符号(caret)
_ 95 下划线(underscore)
` 96 重音符(grave accent)
a 97 小写字母 a
b 98 小写字母 b
c 99 小写字母 c
d 100 小写字母 d
e 101 小写字母 e
f 102 小写字母 f
g 103 小写字母 g
h 104 小写字母 h
i 105 小写字母 i
j 106 小写字母 j
k 107 小写字母 k
l 108 小写字母 l
m 109 小写字母 m
n 110 小写字母 n
o 111 小写字母 o
p 112 小写字母 p
q 113 小写字母 q
r 114 小写字母 r
s 115 小写字母 s
t 116 小写字母 t
u 117 小写字母 u
v 118 小写字母 v
w 119 小写字母 w
x 120 小写字母 x
y 121 小写字母 y
z 122 小写字母 z
{ 123 左花括号(left curly brace)
| 124 竖线(vertical bar)
} 125 右花括号(right curly brace)
~ 126 波浪线(tilde)

HTTP协议

HTTP协议分类

  • HTTP1.0

对应服务器端口:80

特点

  1. 支持 GET、POST、HEAD 方法。
  2. 引入了头部(Headers)、状态码(Status Codes)和内容类型(Content-Type)。
  3. 每个请求需要建立一个新的 TCP 连接(无连接)。
  • HTTP1.1

对应服务器端口:80

特点

  1. 支持持久连接(Keep-Alive),减少 TCP 连接的开销。
  2. 引入了管道化(Pipelining),允许在同一个连接上发送多个请求。
  3. 新增了 PUT、DELETE、OPTIONS、TRACE 等方法。
  4. 支持分块传输编码(Chunked Transfer Encoding)。

但是对于HTTP协议来说,存在着安全隐患,HTTP是明文传输,数据容易被窃听或篡改。这时候另一种协议就会更安全

  • HTTPS

对应服务器端口:443

特点

  1. 基于 TLS/SSL 加密传输,数据安全。

HTTP请求方法

HTTP(超文本传输协议)是一种应用层协议,主要用于客户端和服务器之间的通信。HTTP定义了一些方法(又称为请求方法),用于指示客户端希望对服务器资源执行的操作。以下是一些常见的HTTP方法及其用途:

  1. GET
  • 用途:请求指定资源的表示(通常是网页或文件)。
  • 特点
    • 数据通过URL传递,适合获取数据。
    • 不会对服务器上的资源产生副作用,即是安全的(safe)和幂等的(idempotent)。
  1. POST
  • 用途:向指定资源提交数据(例如表单数据),通常用于创建新的资源。
  • 特点
    • 数据包含在请求体中。
    • 可能会对服务器上的资源产生副作用,不同的请求可能会产生不同的结果。
  1. PUT
  • 用途:更新指定资源。如果资源不存在,则可以创建它。
  • 特点
    • 数据包含在请求体中。
    • 是幂等的,即多次请求结果相同。
  1. DELETE
  • 用途:删除指定资源。
  • 特点
    • 请求体通常为空。
    • 是幂等的,重复请求同一资源的删除不会产生额外效果。
  1. HEAD
  • 用途:获取指定资源的响应头,而不获取实际的资源内容。
  • 特点
    • 常用于检查资源是否存在或获取资源的元信息。
    • 不会对服务器上的资源产生副作用。
  1. OPTIONS
  • 用途:描述目标资源的通信选项,通常用于跨域请求。
  • 特点
    • 返回允许的HTTP方法和其他相关信息。
  1. PATCH
  • 用途:对指定资源进行部分更新。
  • 特点
    • 数据包含在请求体中,可以只修改资源的部分属性。
    • 是非幂等的,具体结果取决于请求内容。
  1. TRACE
  • 用途:用于诊断,回显服务器收到的请求信息。
  • 特点
    • 主要用于调试目的。
  1. CONNECT
  • 用途:建立一个到服务器的隧道,通常用于HTTPS请求。
  • 特点
    • 通常在代理服务器中使用,允许客户端与目标服务器进行安全通信。

URL统一资源定位符

组成结构

1
协议://主机名[:端口]/路径[?查询参数][#片段]

参数介绍

  • 协议:指定访问资源所用的协议,常见的协议包括:

http:超文本传输协议(未加密)。

https:安全的超文本传输协议(加密)。

ftp:文件传输协议。

mailto:电子邮件地址。

file:本地文件。

  • 主机名:指定资源所在的主机(服务器)的名称或 IP 地址。

  • 端口:指定访问资源的端口号(可选)。如果未指定端口则默认http的80端口或者https的443端口

  • 路径:指定资源在服务器上的路径

  • 查询参数:用于向服务器传递的额外参数(可选),以?开头,每个参数之间用&分隔

  • 片段:用于指定资源中的某个部分(如页面中的锚点)(可选)。以#开头

一个完整的URL示例

1
http://www.example.com:8080/path/to/resource?key1=1&key2=2#section1

url编码

URL 中只能包含特定的字符(如字母、数字、-_.~),其他字符需要进行 URL 编码(也称为百分号编码)。

编码规则:将特殊字符转换为 % 后跟两位十六进制数。

字符 来自 Windows-1252 来自 UTF-8
space %20 %20
! %21 %21
%22 %22
# %23 %23
$ %24 %24
% %25 %25
& %26 %26
%27 %27
( %28 %28
) %29 %29
* %2A %2A
+ %2B %2B
, %2C %2C
- %2D %2D
. %2E %2E
/ %2F %2F
0 %30 %30
1 %31 %31
2 %32 %32
3 %33 %33
4 %34 %34
5 %35 %35
6 %36 %36
7 %37 %37
8 %38 %38
9 %39 %39
: %3A %3A
; %3B %3B
< %3C %3C
= %3D %3D
> %3E %3E
? %3F %3F
@ %40 %40
A %41 %41
B %42 %42
C %43 %43
D %44 %44
E %45 %45
F %46 %46
G %47 %47
H %48 %48
I %49 %49
J %4A %4A
K %4B %4B
L %4C %4C
M %4D %4D
N %4E %4E
O %4F %4F
P %50 %50
Q %51 %51
R %52 %52
S %53 %53
T %54 %54
U %55 %55
V %56 %56
W %57 %57
X %58 %58
Y %59 %59
Z %5A %5A
[ %5B %5B
\ %5C %5C
] %5D %5D
^ %5E %5E
_ %5F %5F
` %60 %60
a %61 %61
b %62 %62
c %63 %63
d %64 %64
e %65 %65
f %66 %66
g %67 %67
h %68 %68
i %69 %69
j %6A %6A
k %6B %6B
l %6C %6C
m %6D %6D
n %6E %6E
o %6F %6F
p %70 %70
q %71 %71
r %72 %72
s %73 %73
t %74 %74
u %75 %75
v %76 %76
w %77 %77
x %78 %78
y %79 %79
z %7A %7A
{ %7B %7B
| %7C %7C
} %7D %7D
~ %7E %7E
%7F %7F
` %80 %E2%82%AC
 %81 %81
%82 %E2%80%9A
ƒ %83 %C6%92
%84 %E2%80%9E
%85 %E2%80%A6
%86 %E2%80%A0
%87 %E2%80%A1
ˆ %88 %CB%86
%89 %E2%80%B0
Š %8A %C5%A0
%8B %E2%80%B9
Œ %8C %C5%92
 %8D %C5%8D
Ž %8E %C5%BD
 %8F %8F
 %90 %C2%90
%91 %E2%80%98
%92 %E2%80%99
%93 %E2%80%9C
%94 %E2%80%9D
%95 %E2%80%A2
%96 %E2%80%93
%97 %E2%80%94
˜ %98 %CB%9C
%99 %E2%84
š %9A %C5%A1
%9B %E2%80
œ %9C %C5%93
 %9D %9D
ž %9E %C5%BE
Ÿ %9F %C5%B8
%A0 %C2%A0
¡ %A1 %C2%A1
¢ %A2 %C2%A2
£ %A3 %C2%A3
¤ %A4 %C2%A4
¥ %A5 %C2%A5
¦ %A6 %C2%A6
§ %A7 %C2%A7
¨ %A8 %C2%A8
© %A9 %C2%A9
ª %AA %C2%AA
« %AB %C2%AB
¬ %AC %C2%AC
­ %AD %C2%AD
® %AE %C2%AE
¯ %AF %C2%AF
° %B0 %C2%B0
± %B1 %C2%B1
² %B2 %C2%B2
³ %B3 %C2%B3
´ %B4 %C2%B4
µ %B5 %C2%B5
%B6 %C2%B6
· %B7 %C2%B7
¸ %B8 %C2%B8
¹ %B9 %C2%B9
º %BA %C2%BA
» %BB %C2%BB
¼ %BC %C2%BC
½ %BD %C2%BD
¾ %BE %C2%BE
¿ %BF %C2%BF
À %C0 %C3%80
Á %C1 %C3%81
 %C2 %C3%82
à %C3 %C3%83
Ä %C4 %C3%84
Å %C5 %C3%85
Æ %C6 %C3%86
Ç %C7 %C3%87
È %C8 %C3%88
É %C9 %C3%89
Ê %CA %C3%8A
Ë %CB %C3%8B
Ì %CC %C3%8C
Í %CD %C3%8D
Î %CE %C3%8E
Ï %CF %C3%8F
Ð %D0 %C3%90
Ñ %D1 %C3%91
Ò %D2 %C3%92
Ó %D3 %C3%93
Ô %D4 %C3%94
Õ %D5 %C3%95
Ö %D6 %C3%96
× %D7 %C3%97
Ø %D8 %C3%98
Ù %D9 %C3%99
Ú %DA %C3%9A
Û %DB %C3%9B
Ü %DC %C3%9C
Ý %DD %C3%9D
Þ %DE %C3%9E
ß %DF %C3%9F
à %E0 %C3%A0
á %E1 %C3%A1
â %E2 %C3%A2
ã %E3 %C3%A3
ä %E4 %C3%A4
å %E5 %C3%A5
æ %E6 %C3%A6
ç %E7 %C3%A7
è %E8 %C3%A8
é %E9 %C3%A9
ê %EA %C3%AA
ë %EB %C3%AB
ì %EC %C3%AC
í %ED %C3%AD
î %EE %C3%AE
ï %EF %C3%AF
ð %F0 %C3%B0
ñ %F1 %C3%B1
ò %F2 %C3%B2
ó %F3 %C3%B3
ô %F4 %C3%B4
õ %F5 %C3%B5
ö %F6 %C3%B6
÷ %F7 %C3%B7
ø %F8 %C3%B8
ù %F9 %C3%B9
ú %FA %C3%BA
û %FB %C3%BB
ü %FC %C3%BC
ý %FD %C3%BD
þ %FE %C3%BE
ÿ %FF %C3%BF

请求头介绍

请求头(Request Headers) 是 HTTP 请求的一部分,用于向服务器传递额外的信息。它们以键值对的形式存在,提供了关于客户端、请求内容、缓存策略等方面的详细信息。

请求头的存在有助于客户端与服务器之间的有效通信。通过请求头,客户端可以告诉服务器许多关于自己的信息,如浏览器类型、操作系统、所支持的内容格式等。这使得服务器能够根据这些信息,生成针对性的、优化的响应。

组成格式

一个标头包括它的名称(不区分大小写),一个冒号(:),可选且会被忽略的空格,最后是它的值(例如 Allow: POST)。

常用请求头大全

HTTP 请求头大全

分类 请求头 说明 示例
通用请求头 Host 指定服务器的域名和端口号。 Host: example.com
User-Agent 标识客户端(如浏览器、爬虫)的类型和版本。 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64)
Accept 指定客户端希望接收的内容类型(MIME 类型)。 Accept: text/html,application/xhtml+xml
Accept-Language 指定客户端希望接收的语言。 Accept-Language: en-US,en;q=0.9
Accept-Encoding 指定客户端希望接收的内容编码(如压缩格式)。 Accept-Encoding: gzip, deflate, br
Connection 控制连接的行为,如是否保持连接。 Connection: keep-alive
Cache-Control 指定缓存策略。 Cache-Control: no-cache
Pragma 用于向后兼容 HTTP/1.0 的缓存控制。 Pragma: no-cache
Upgrade-Insecure-Requests 指示客户端希望将不安全的 HTTP 请求升级为 HTTPS。 Upgrade-Insecure-Requests: 1
Via 用于记录请求或响应经过的代理服务器(正向代理/反向代理、网关、缓存等)路径信息 Via: ymzx.qq.com
请求内容相关 Content-Type 指定请求体的内容类型(MIME 类型)。 Content-Type: application/json
Content-Length 指定请求体的长度(字节数)。 Content-Length: 348
Content-Encoding 指定请求体的编码方式(如压缩格式)。 Content-Encoding: gzip
Content-Language 指定请求体的语言。 Content-Language: en-US
Content-Location 指定请求体的位置。 Content-Location: /path/to/resource
Content-Range 指定请求体的范围(用于分块传输)。 Content-Range: bytes 0-499/1234
身份验证相关 Authorization 传递身份验证信息(如 Bearer Token、Basic Auth)。 Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
Cookie 传递客户端的 Cookie 信息。 Cookie: sessionId=abc123; username=john
Proxy-Authorization 用于代理服务器的身份验证。 Proxy-Authorization: Basic YWxhZGRpbjpvcGVuc2VzYW1l
条件请求相关 If-Modified-Since 指定资源的最后修改时间,用于条件请求。 If-Modified-Since: Mon, 10 Oct 2022 12:00:00 GMT
If-None-Match 指定资源的 ETag,用于条件请求。 If-None-Match: "abc123"
If-Unmodified-Since 指定资源的最后修改时间,用于条件请求。 If-Unmodified-Since: Mon, 10 Oct 2022 12:00:00 GMT
If-Match 指定资源的 ETag,用于条件请求。 If-Match: "abc123"
If-Range 指定资源的 ETag 或最后修改时间,用于范围请求。 If-Range: "abc123"
其他请求头 Referer 指定请求的来源页面。 Referer: https://example.com/page
Origin 指定请求的来源(用于跨域请求)。 Origin: https://example.com
X-Requested-With 标识请求是通过 AJAX 发送的。 X-Requested-With: XMLHttpRequest
DNT (Do Not Track) 指示客户端是否启用“不跟踪”功能。 DNT: 1
TE (Transfer-Encoding) 指定客户端希望接收的传输编码。 TE: trailers, deflate
自定义请求头 X-Forwarded-For 标识客户端的原始 IP 地址(用于代理服务器)。 X-Forwarded-For: 192.168.1.1
X-Forwarded-Proto 标识客户端的原始协议(如 HTTP 或 HTTPS)。 X-Forwarded-Proto: https
X-Real-IP 标识客户端的真实 IP 地址。 X-Real-IP: 192.168.1.1
X-Custom-Header 自定义请求头,用于传递额外的信息。 X-Custom-Header: value
Client-IP 直接标明代理提取的真实客户端 IP Client-IP: 1.2.3.4

HTTP响应码大全

HTTP 响应码(HTTP Status Codes)是服务器对客户端请求的响应状态的三位数字代码。它们分为五类,分别表示不同的响应类型。

HTTP 响应码大全

分类 响应码 名称 说明
1xx: 信息响应 100 Continue(继续) 客户端应继续发送请求的剩余部分。
101 Switching Protocols(切换协议) 服务器已理解客户端的请求,并将切换到指定的协议。
102 Processing(处理中) 服务器已收到请求,但尚未完成处理。
103 Early Hints(早期提示) 服务器返回部分响应头,提示客户端提前加载资源。
2xx: 成功响应 200 OK(成功) 请求已成功处理。
201 Created(已创建) 请求已成功处理,并创建了新资源。
202 Accepted(已接受) 请求已接受,但尚未处理完成。
203 Non-Authoritative Information(非权威信息) 请求成功,但返回的元信息来自缓存或第三方。
204 No Content(无内容) 请求成功,但响应中没有内容。
205 Reset Content(重置内容) 请求成功,客户端应重置文档视图。
206 Partial Content(部分内容) 服务器成功处理了部分 GET 请求。
207 Multi-Status(多状态) 返回多个状态码,通常用于 WebDAV。
208 Already Reported(已报告) 资源的状态已在前面的响应中报告。
226 IM Used(IM 已使用) 服务器已完成对资源的操作,并返回结果。
3xx: 重定向响应 300 Multiple Choices(多种选择) 请求的资源有多个选择,客户端应选择其中一个。
301 Moved Permanently(永久重定向) 请求的资源已永久移动到新位置。
302 Found(临时重定向) 请求的资源临时移动到新位置。
303 See Other(查看其他位置) 客户端应使用 GET 方法访问新位置。
304 Not Modified(未修改) 资源未修改,客户端可使用缓存版本。
305 Use Proxy(使用代理) 请求的资源必须通过代理访问。
307 Temporary Redirect(临时重定向) 请求的资源临时移动到新位置,客户端应保持原请求方法。
308 Permanent Redirect(永久重定向) 请求的资源已永久移动到新位置,客户端应保持原请求方法。
4xx: 客户端错误 400 Bad Request(错误请求) 请求无效,服务器无法理解。
401 Unauthorized(未授权) 请求需要身份验证。
402 Payment Required(需要付款) 保留状态码,通常用于支付系统。
403 Forbidden(禁止访问) 服务器拒绝请求。
404 Not Found(未找到) 请求的资源不存在。
405 Method Not Allowed(方法不允许) 请求的方法不被允许。
406 Not Acceptable(不可接受) 服务器无法生成客户端可接受的响应。
407 Proxy Authentication Required(需要代理认证) 客户端需要通过代理进行身份验证。
408 Request Timeout(请求超时) 请求超时,服务器未收到完整请求。
409 Conflict(冲突) 请求与服务器的当前状态冲突。
410 Gone(已删除) 请求的资源已永久删除。
411 Length Required(需要长度) 请求需要指定 Content-Length 头。
412 Precondition Failed(前提条件失败) 请求的前提条件不满足。
413 Payload Too Large(负载过大) 请求的负载超过服务器限制。
414 URI Too Long(URI 过长) 请求的 URI 过长,服务器无法处理。
415 Unsupported Media Type(不支持的媒体类型) 请求的媒体类型不被支持。
416 Range Not Satisfiable(范围无效) 请求的范围无效。
417 Expectation Failed(期望失败) 请求的 Expect 头无法满足。
418 I’m a teapot(我是茶壶) 幽默响应码,表示服务器是茶壶。
421 Misdirected Request(错误定向请求) 请求被错误定向到无法处理它的服务器。
422 Unprocessable Entity(无法处理的实体) 请求格式正确,但语义错误。
423 Locked(已锁定) 请求的资源被锁定。
424 Failed Dependency(依赖失败) 请求依赖于另一个请求,但该请求失败。
425 Too Early(过早) 服务器拒绝处理可能被重放的请求。
426 Upgrade Required(需要升级) 客户端需要升级协议。
428 Precondition Required(需要前提条件) 请求需要包含前提条件。
429 Too Many Requests(请求过多) 客户端发送了过多请求。
431 Request Header Fields Too Large(请求头字段过大) 请求头字段过大,服务器无法处理。
451 Unavailable For Legal Reasons(因法律原因不可用) 请求的资源因法律原因不可用。
5xx: 服务器错误 500 Internal Server Error(服务器内部错误) 服务器遇到意外错误,无法完成请求。
501 Not Implemented(未实现) 服务器不支持请求的功能。
502 Bad Gateway(错误网关) 服务器作为网关或代理时,从上游服务器收到无效响应。
503 Service Unavailable(服务不可用) 服务器暂时无法处理请求(通常由于过载或维护)。
504 Gateway Timeout(网关超时) 服务器作为网关或代理时,未及时从上游服务器收到响应。
505 HTTP Version Not Supported(HTTP 版本不支持) 服务器不支持请求的 HTTP 版本。
506 Variant Also Negotiates(变体协商) 服务器内部配置错误。
507 Insufficient Storage(存储不足) 服务器无法存储完成请求所需的内容。
508 Loop Detected(检测到循环) 服务器检测到无限循环。
510 Not Extended(未扩展) 请求需要进一步扩展。
511 Network Authentication Required(需要网络认证) 客户端需要通过网络进行身份验证。

Python发送http请求

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
#HTTP请求的学习
import requests

url = "https://www.baidu.com"
#GET请求
r = requests.get(url = url)#无参数GET请求
#r = requests.get(url = url,params = {'username':'admin','password':'admin123456'})#有参数GET请求

print("-----------分割线-------------")

#POST请求

r = requests.post(url = url)#无参数POST请求
data = {
'username' : 'admin',
'password' : 'admin123456'
}
r = requests.post(url = url , data = data)#有参数POST请求

print("-----------分割线-------------")

#自定义请求头

#headers请求头自定义

headers = {
"User_Agent" : "Mozilla/5.0 (Windows NT 10.0; Win64; x64)"
}
r = requests.post(url = url, headers = headers)#自定义请求头发送请求

Python获取http信息

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
35
36
import requests

#获取HTTP响应

url = "https://www.baidu.com"
r = requests.get(url=url)
#获取响应码
print(r.status_code)

#获取响应文本
print(r.text)#text文本,返回的是页面的字符串信息,r.text 会自动将响应内容解码为字符串。
print("-------------------------------------------------------")
print(r.content)#content文本,返回的是原始的字节数据

#将字节数据转化成指定编码

print(r.content.decode('utf-8'))#可以看到这里编码后就和r.text一样了

#获取响应头
print("-------------------------------------------------------")
print(r.headers)


#获取请求头
print("-------------------------------------------------------")
print(r.request.headers)


#获取请求url
print("-------------------------------------------------------")
print(r.url)


#获取cookie
print("-------------------------------------------------------")
print(r.cookies)

Python获取页面Cookie

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#获取网页的会话session
import requests

url = "https://www.baidu.com"

s = requests.Session()
r = s.get(url)
print(r.cookies)
print("----------------------------------------------------------------------------------------")
print(r.request.headers)
#第一次请求的时候返回对应的cookie值,后面的请求中则会自动携带cookie
r = s.get(url)
print("----------------------------------------------------------------------------------------")
print(r.request.headers)
#<RequestsCookieJar[<Cookie BDORZ=27315 for .baidu.com/>]>
#----------------------------------------------------------------------------------------
#{'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': #'keep-alive'}
#----------------------------------------------------------------------------------------
#{'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': #'keep-alive', 'Cookie': 'BDORZ=27315'}