爬虫 | 基于 requests 实现加密 POST 请求发送与身份验证

Hi,大家好,我是半亩花海。本项目旨在实现一个简单的 Python 脚本,用于向指定的 URL 发送 POST 请求,并通过特定的加密算法生成请求头中的签名信息。这个脚本的背后是与某个特定的网络服务交互,发送特定格式的 JSON 数据,并通过生成的签名进行身份验证


目录

一、项目功能

二、注意事项

三、代码解析

1. 导入必要的库

2. 定义签名生成函数

3. 构造请求数据

4. 设置请求头

5. 发送 POST 请求

6. 打印响应结果

四、结果展示

五、完整代码


一、项目功能

  • 发送 POST 请求到指定的 URL。
  • 构造请求头,其中包括特定的签名信息,用于身份验证。
  • 使用 MD5 算法对特定格式的数据进行加密,并将加密结果作为请求头的一部分。

二、注意事项

  • 在运行代码之前,请确保安装了相应的 Python 库,特别是 requests 库。
  • 由于代码中大部分请求头信息都被注释掉了,使用时需要根据实际情况取消注释。
  • 此项目仅供学习和演示用途,使用时应遵守相关网站的使用规定和法律法规。

三、代码解析

1. 导入必要的库

import requests
from hashlib import md5
  • 使用 requests 库发送 HTTP 请求。
  • 导入 md5 函数用于进行 MD5 加密。

2. 定义签名生成函数

def u(t):
    o = '9SASji5OWnG41iRKiSvTJHlXHmRySRp1'
    result = t.lower() + '&' + o.lower()
    return md5(result.encode()).hexdigest()
  • 定义了一个名为 u 的函数,用于生成签名信息。
  • 使用一个固定的字符串 o 作为加密的盐值。
  • 将传入的字符串 t 与盐值拼接后,将其转换为小写,并使用 MD5 算法进行加密,最终返回加密后的结果。

3. 构造请求数据

data = '{"keyword":"","provinceNames":[],"natureTypes":[],"eduLevel":"","categories":[],"features":[],"pageIndex":4,' \
       '"pageSize":20,"sort":11} '
  • 构造了一个 JSON 格式的字符串,作为 POST 请求的正文内容。

4. 设置请求头

headers = {
    'Content-Type': 'application/json',
    'u-sign': u(data),
}
  • 设置了请求头,其中包括了 Content-Typeu-sign
  • Content-Type 指定了请求正文的格式为 JSON。
  • u-sign 使用了前面定义的签名生成函数 u(data),将生成的签名信息添加到请求头中。

5. 发送 POST 请求

url = 'https://uwf7de983aad7a717eb.youzy.cn/youzy.dms.basiclib.api.college.query'
response = requests.post(url, headers=headers, data=data)
  • 指定了要发送请求的 URL。
  • 使用 requests.post 方法发送 POST 请求,并将返回的响应保存在 response 变量中。

6. 打印响应结果

print(response.json())
  • 使用 response.json() 方法将响应结果转换为 JSON 格式,并打印出来。

四、结果展示

整个代码就完成了一个完整的加密 POST 请求的发送过程,包括了生成签名信息、构造请求数据、设置请求头、发送请求以及处理响应结果等步骤。

这个小项目展示了如何使用 Python 中的 requests 库发送 HTTP 请求,并在请求头中加入签名信息进行身份验证。同时,通过对数据进行 MD5 加密,增强了数据传输的安全性。


五、完整代码

#!/usr/bin/env python
# -*- encoding: utf-8 -*-
import requests
from hashlib import md5


def u(t):
    o = '9SASji5OWnG41iRKiSvTJHlXHmRySRp1'
    result = t.lower() + '&' + o.lower()
    return md5(result.encode()).hexdigest()


data = '{"keyword":"","provinceNames":[],"natureTypes":[],"eduLevel":"","categories":[],"features":[],"pageIndex":4,' \
       '"pageSize":20,"sort":11} '

headers = {
    # 'Connection': 'keep-alive',
    # 'Content-Length': '132',
    'Content-Type': 'application/json',
    # 'Host': 'uwf7de983aad7a717eb.youzy.cn',
    # 'Origin': 'https://pv4y-pc.youzy.cn',
    # 'Referer': 'https://pv4y-pc.youzy.cn/',
    # 加密的数据
    'u-sign': u(data),
    # 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko)
    # Chrome/103.0.0.0 Safari/537.36'
}

url = 'https://uwf7de983aad7a717eb.youzy.cn/youzy.dms.basiclib.api.college.query'
response = requests.post(url, headers=headers, data=data)
print(response.json())

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/556040.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

深入理解MySQL中的UPDATE JOIN语句

在MySQL数据库中,UPDATE语句用于修改表中现有的记录。有时,我们需要根据另一个相关联表中的条件来更新表中的数据。这时就需要使用UPDATE JOIN语句。最近我们遇到了这样的需求:我们有一张历史记录表,其中一个字段记录了用,连接的多…

网络爬虫软件学习

1 什么是爬虫软件 爬虫软件,也称为网络爬虫或网络蜘蛛,是一种自动抓取万维网信息的程序或脚本。它基于一定的规则,自动地访问网页并抓取需要的信息。爬虫软件可以应用于大规模数据采集和分析,广泛应用于舆情监测、品牌竞争分析、…

在 Linux 终端中创建目录

目录 ⛳️推荐 前言 在 Linux 中创建一个新目录 创建多个新目录 创建多个嵌套的子目录 测试你的知识 ⛳️推荐 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站 前言 在本系列的这一部…

Day09 React———— 第九天

ReactRoter 一个路径 path 对应一个组件 component 当我们在浏览器中访问一个 path 的时候,path 对应的组件会在页面中进行渲染 基础用法 import { createBrowserRouter, RouterProvider } from "react-router-dom"; const router createBrowserRoute…

解决Mac使用Vscode无法调用外部终端

前言 今天遇到一个很奇怪的问题,之前好好的用Vscode还能调用外部终端,怎么今天不行了?问题出在哪里呢?请听我娓娓道来。 检查配置文件 我查看了一下配置文件,发现配置文件都是调用外部控制台,没毛病啊。 …

linux启动minicom、u-boot的常用命令、网络命令tftp、nfs/根文件系统、u-boot的bootargs环境变量

linux启动minicom sudo minicom -con进入minicom界面: 打开单片机 在打开之后,我们通过 printenv查看环境配置 在修改配置之前,我们最好先将环境初始化一下,初始化代码为 nand erase.chipu-boot的常用命令 尽管u-boot是一个…

Torch 模型 感受野可视化

前言:感受野是卷积神经网络 (CNN) 中一个重要的概念,它表示 CNN 每一层输出的特征图上的像素点在输入图像上映射的区域。感受野的大小和形状直接影响到网络对输入图像的感知范围和精度,进而调整网络结构、卷积核大小和步长等参数,…

后端-MySQL-week11 多表查询

tips: distinct————紧跟“select”之后,用于去重 多表查询 概述 一对多(多对一) 多对多 一对一 多表查询概述 分类 连接查询 内连接 外连接 自连接 必须起别名! 联合查询-union,union all 子查询 概念 分类 …

OpenMesh 极小曲面(局部迭代法)

文章目录 一、简介二、实现代码三、实现效果参考资料一、简介 我们的目标是想得到一个曲率处处为0的曲面,具体操作如下所述: 二、实现代码 #define _USE_MATH_DEFINES #include

量子时代加密安全与区块链应用的未来

量子时代加密安全与区块链应用的未来 现代密码学仍然是一门相对年轻的学科,但其历史却显示了一种重要的模式。大多数的发展都是基于几年甚至几十年前的研究。而这种缓慢的发展速度也是有原因的,就像药物和疫苗在进入市场之前需要经过多年的严格测试一样&…

【Web】2022DASCTF X SU 三月春季挑战赛 题解(全)

目录 ezpop calc upgdstore ezpop 瞪眼看链子 fin#__destruct -> what#__toString -> fin.run() -> crow#__invoke -> fin#__call -> mix.get_flag() exp <?php class crow {public $v1;public $v2;}class fin {public $f1; }class what {public $a; }…

MATLAB中gurobi 运行报错与调试

问题背景如下&#xff1a;刚拿到一份MATLAB的代码&#xff0c;但是电脑第一次安装gurobi&#xff0c;在运行过程中发生了报错&#xff0c;使用断点进行调试和步进调试方法&#xff0c;最终发现&#xff0c;这个问题出在了哪一步&#xff0c;然后向了人工智能和CSDN、百度寻求答…

VScode远程连接虚拟机提示: 无法建立连接:XHR failed.问题解决方案

一问题描述 在vscode下载插件Remote-SSH远程连接虚拟机时提示无法建立连接 二.最大嫌疑原因&#xff1a; 我也是在网上找了许久&#xff0c;发现就是网络原因&#xff0c;具体不知&#xff0c;明明访问别的网页没问题&#xff0c;就是连不上&#xff0c;然后发现下载vscode的…

数据赋能(61)——要求:数据管理部门职责

“要求&#xff1a;数据管理部门职责”是作为标准的参考内容编写的。 数据管理部门职责在于以数据资源为核心&#xff0c;将原始数据转化为可被业务部门与数据服务部门有效利用的数据资源&#xff0c;以支持业务赋能的实现。 数据管理要确保数据的完整性、准确性与一致性&…

Debian12 中重新安装MSSQL 并指定服务器、数据库、数据表字段的字符排序规则和默认语言等参数

在 Linux 上配置 SQL Server 设置 - SQL Server | Microsoft Learn 零、查看sql server 服务器支持的字符排序规则 SELECT Name from sys.fn_helpcollations() where name Like Chinese% go------ Chinese_PRC_CI_AI Chinese_PRC_CI_AI_WS Chinese_PRC_CI_AI_KS Chinese_PRC_…

【工具使用】CSDN中如何给文章添加目录跳转

这里写需要添加的目录名称 一级标题二级标题三级标题 一级标题 二级标题 三级标题 文章添加标题示例&#xff1a;

YoloV8改进策略:注意力改进、Neck层改进|自研全新的Mamba注意力|即插即用,简单易懂|附结构图|检测、分割、关键点均适用(独家原创,全世界首发)

摘要 无Mamba不狂欢,本文打造基于Mamba的注意力机制。全世界首发基于Mamba的注意力啊!对Mamba感兴趣的朋友一定不要错过啊! 基于Mamba的高效注意力代码和结构图 import torch import torch.nn as nn # 导入自定义的Mamba模块 from mamba_ssm import Mamba class Eff…

MySql安装(Linux)

一、清除原来的mysql环境 在前期建议使用root用户来进行操作&#xff0c;使用 su -来切换成root用户&#xff0c;但是如果老是提示认证失败&#xff0c;那么有可能我们的root密码并没有被设置&#xff0c; 我们可以先设置root的密码 sudo passwd root 然后就可以切换了。 …

爬虫 | 基于 Python 实现有道翻译工具

Hi&#xff0c;大家好&#xff0c;我是半亩花海。本项目旨在利用 Python 语言实现一个简单的有道翻译工具。有道翻译是一款常用的在线翻译服务&#xff0c;能够实现多种语言的互译&#xff0c;提供高质量的翻译结果。 目录 一、项目功能 二、注意事项 三、代码解析 1. 导入…

【Linux】socket编程3

欢迎来到Cefler的博客&#x1f601; &#x1f54c;博客主页&#xff1a;折纸花满衣 &#x1f3e0;个人专栏&#xff1a;题目解析 &#x1f30e;推荐文章&#xff1a;【Linux】socket套接字 前言 下面的编程代码中&#xff0c;一些socket接口需要参考【Linux】socket套接字 目录…