文章

HttpRequest

抓取流地址

Request模块

安装

1
2
3
4
pip3 install requests

#使用
import requests

Response = Request.ger(url)会返回一个Response对象。

例:

1
2
3
url = "https://www.huya.com/captainmo"
a = request.get(url)  #a就是Response
print(a.status_code)

Response包含多个属性:

  • status_code:HTTP响应状态码.
  • text:会尝试按照响应头中指定的字符编码来解码响应内容,并返回一个包含文本信息的字符串,文本形式,包含服务器返回的HTML、JSON或其它文本数据.
  • content:响应内容的二进制形式,适用俞处理费文本数据,如图片或而文件.
  • headers:字典形式的响应头信息,包含服务器返回的各种元数据.
  • url:用于检查是否发生了重定向.
  • json():将响应内容解析为JSON格式。如果响应内容是JSON数据,可以使用此方法获取解析后的Python对象.

Python中解析器

安装

1
pip3 install lxml

Beautiful Soup 支持的解析器:

  • html.parser
  • lxml
  • xml
  • html5lib

BeautifulSoup4中的一些方法

安装

1
2
3
4
pip3 install beautifulsoup4

#使用
from bs4 import BeautifulSoup 

Hashlib模块(哈希函数)

什么是哈希函数

哈希函数是对明文进行转换的一种方式。它们生成的哈希值是固定长度的二进制数据,通常以十六进制或 Base64 编码的形式表示。哈希函数将输入数据(明文)转换为固定长度的哈希值,这个过程是不可逆的。不同的输入会产生不同的哈希值,但相同的输入始终产生相同的哈希值

用途特性:

  • 数据完整性验证:

    哈希值可以用于验证数据的完整性。通过比较数据的哈希值,可以确定数据是否在传输或存储过程中被篡改。即使只有一个字节的变化,都会导致哈希值的显著变化。

    假设有一份原始数据,我们计算其哈希值并记录下来。如果有人在原始数据上进行了修改,不管是改变了一个字节还是整个文件,都将导致修改后的数据与原始数据的哈希值不同。通过比较存储的原始数据的哈希值和当前数据的哈希值,我们可以轻松地检测到数据是否被篡改。

  • 密码存储:

    在用户注册时,系统通常会将用户密码的哈希值存储在数据库中而不是明文密码。当用户尝试登录时,系统会将输入密码的哈希值与存储在数据库中的哈希值进行比较,而不是直接比较明文密码。

  • 数字签名:

    哈希值与私钥结合使用,可以生成数字签名,用于验证文件的来源和完整性。数字签名通常用于确保文件在传输过程中未被篡改。

  • 散列表:

    在数据结构中,哈希函数用于生成散列值,用于快速检索和存储数据,例如哈希表。

  • 文件去重:

    哈希值可用于快速比较文件内容,以确定文件是否与其他文件相同,从而实现文件去重。

  • 安全摘要:

    哈希值可以用于生成消息摘要,用于存储敏感信息的摘要而不是明文,以增加安全性。

什么是哈希碰撞?

在密码学和哈希函数的上下文中,”碰撞”指的是两个不同的输入产生相同的哈希值。理想情况下,每个唯一的输入都应该映射到一个唯一的哈希值,但由于哈希函数输出是固定长度的,而输入是无限的,存在不同的输入可能产生相同的输出的可能性,这就是碰撞。

hashlib包含了多种哈希函数或者说是哈希算法

常见的哈希函数:

  1. MD5 (Message Digest Algorithm 5):

    128 位哈希值

    已经被证明存在碰撞攻击风险,不再推荐用于安全应用

  2. SHA-1 (Secure Hash Algorithm 1):

    160 位哈希值

    与 MD5 类似,存在碰撞攻击风险,不再推荐用于安全应用

  3. SHA-224:

    224 位哈希值

    SHA-256 的截断版本

  4. SHA-256:

    256 位哈希值

    广泛用于安全应用,如密码存储和数字签名

  5. SHA-384:

    384 位哈希值

    SHA-512 的截断版本

  6. SHA-512:

    512 位哈希值

    用于需要更高安全性的应用,如数字证书

  7. SHA-3 (Keccak):

    基于 Keccak 算法,提供了不同的设计与 SHA-2 系列

    支持多种输出长度,如 SHA3-224、SHA3-256、SHA3-384、SHA3-512 等

  8. Whirlpool:

    512 位哈希值

    设计用于密码学安全,但相对较慢

Re模块(正则表达式)

本文由作者按照 CC BY 4.0 进行授权