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

news2025/2/28 21:48:32

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())

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

vi编辑器的用法linux中的vim编辑器大全

vim的介绍 vi 和 vim 命令是linux中强⼤的⽂本编辑器, 由于Linux系统⼀切皆⽂件,⽽配置⼀个服务就是在修改其配置⽂件的参数。 vim 编辑器是运维⼯程师必须掌握的⼀个⼯具, 没有它很多⼯作都⽆法完成。 其中有vi和vim两种 vi和vim的区别 Vim是Vi的升级版本&#…

source map 开发优化工具

什么是 Source map 简单来说 Source map 就是一个存储信息的文件,里面储存着位置信息。 Source map 英文释义:源程序映射。 位置信息:转换后的代码 对应的 转换前的代码 位置映射关系。 有了 Source map,就算线上运行的是转换…

el-menu 该有的页面显示不出来第一个应该想到的问题首先就算检查是否多写了一个 , 导致显示不出来原有的页面

问题描述 el-menu 该有的页面显示不出来第一个应该想到的问题首先就算检查是否多写了一个 , 导致显示不出来原有的页面 如图所示多写了一个,就会导致该有的页面显示不出来。

nVisual在线网络规划设计软件

●01● nVisual在线网络规划设计软件 在信息化快速发展的今天,网络基础设施的建设与优化变得尤为关键。为了满足现代通信行业对高效、精准的网络规划需求,nVisual在线网络规划设计软件应运而生,它通过集成先进的GIS技术和网络规划工具&#…

OpenHarmony鸿蒙南向开发案例:【智能门铃】

样例简介 智能门铃通过监控来访者信息,告诉主人门外是否有人按铃、有陌生人靠近或者无人状态。主人可以在数字管家中远程接收消息,并根据需要进行远程取消报警和一键开锁。同时,也可以通过室内屏幕获取门外状态。室内屏幕显示界面使用DevEco…

人工智能,如何走好下一步

以下文章来源:金台资讯 2023年,生成式人工智能在全球范围爆火,引发了人工智能领域新一轮的科技竞赛。眼下,人工智能不仅能辅助科学研究与艺术创作,还能实现自动驾驶、打造“无人农场”和“黑灯工厂”,成为解…

数据很重要,ASM磁盘组损坏,使用AMDU来抢救

欢迎关注“数据库运维之道”公众号,一起学习数据库技术! 本期将为大家分享“数据很重要,ASM磁盘组损坏,使用AMDU来抢救”的处置案例。这个案例对个人来说比较经典,下面我将把自己的处理思路进行整理与总结。 环境信息&#xff1…

户用光伏业务解决方案

一、光伏户用痛点 1、推广难 没有成熟的推广与拓客能力,造成时间和金钱大量浪费。 2、管理难 有内部和外部几十或者上百推广人员,管理纷杂,效率低下。 3、无制度 缺少有效的人员管理制度与系统,分辨不出优秀人才&#xff0c…

Let‘s Forkin‘ Dance!Tanssi 激励测试网活动全面启动

作者:Tanssi 编译:OneBlock 作为 Tanssi 社区和生态系统发展的重要推手,Tanssi 基金会推出了 Incentivized TestNet 活动 —— Let’s Forkin’ Dance。该活动旨在激励顶尖参与者,推动社区增长和网络活动,为今年晚些时…

c语言-快速排序

文章目录 代码工程运行结果 这个是升序排列&#xff0c;如果想降序排列,将下面两行的符号反过来即可; arr[right] < arr[key] arr[left] > arr[key]代码工程 #define _CRT_SECURE_NO_WARNINGS #include<stdio.h>void swap(int *v1, int *v2) {int temp *v1;*v1 …

【VTKExamples::Meshes】第 十四期 ExtractEdges

很高兴在雪易的CSDN遇见你 VTK技术爱好者 QQ:870202403 公众号:VTK忠粉 前言 本文分享VTK样例ExtractEdges,并解析接口vtkExtractEdges,希望对各位小伙伴有所帮助! 感谢各位小伙伴的点赞+关注,小易会继续努力分享,一起进步! 你的点赞就是我的动力(^U^)ノ~…

如何高效建立企业绩效评估体系?这家世界500强企业用BI工具这么做

在目前经济下行&#xff0c;竞争激烈&#xff0c;向精细化管理要效益的社会背景下&#xff0c;如何对资金结算部门做好绩效管理&#xff0c;以保障组织的正常运作&#xff0c;是各大企业面对的重要痛点。 本文将基于某世界500强公司的财务共享资金结算部门的绩效管理办法&…

python处理IP对应城市省份

python处理IP对应城市省份 IP地理地址库geoip2用法 数据包下载 数据包下载地址&#xff08;需要注册&#xff09; https://www.maxmind.com/en/accounts/258630/geoip/downloads 考虑到注册麻烦&#xff0c;可以到下面这个github的链接去直接下载 https://github.com/Hackl0…

代码随想录第41天| 96.不同的二叉搜索树 动态规划:01背包理论基础

96.不同的二叉搜索树 96. 不同的二叉搜索树 - 力扣&#xff08;LeetCode&#xff09; 代码随想录 (programmercarl.com) 动态规划找到子状态之间的关系很重要&#xff01;| LeetCode&#xff1a;96.不同的二叉搜索树_哔哩哔哩_bilibili 给你一个整数 n &#xff0c;求恰由 n 个…

【随笔】Git 基础篇 -- 拉取数据 git pull(二十八)

&#x1f48c; 所属专栏&#xff1a;【Git】 &#x1f600; 作  者&#xff1a;我是夜阑的狗&#x1f436; &#x1f680; 个人简介&#xff1a;一个正在努力学技术的CV工程师&#xff0c;专注基础和实战分享 &#xff0c;欢迎咨询&#xff01; &#x1f496; 欢迎大…

STM32电机控制固件架构

目录 一、应用程序剖析 二、面向现场的控制实现体系结构 1、参考计算循环 2、电流调节环路 3、安全回路 一、应用程序剖析 上图显示了由ST MC SDK构建的电机控制应用程序。首先&#xff0c;这样的应用程序是由电机控制工作台生成的软件项目&#xff0c;这要归功于STM32Cube…

程序员副业指导

程序员如何搞副业&#xff1f; 程序员不仅拥有将抽象概念转化为实际应用的能力&#xff0c;还通常具备强大的逻辑思维和问题解决能力。然而&#xff0c;许多程序员并不满足于仅仅在一家公司工作&#xff0c;他们渴望通过副业来实现个人价值的最大化&#xff0c;增加收入&#…

【华为 ICT HCIA eNSP 习题汇总】——题目集17

1、以下哪项不属于网络层安全威胁&#xff1f; A、DDos攻击 B、钓鱼攻击 C、IP Spoofing D、IP地址扫描 考点&#xff1a;网络安全 解析&#xff1a;&#xff08;B&#xff09; 钓鱼攻击通常被认为是应用层的安全威胁&#xff0c;也有在网络层进行伪装实施钓鱼攻击&#xff0c;…

gemini国内怎么用

gemini国内怎么用 Google Gemini 作为一个尚处于研发阶段的大型语言模型&#xff0c;其具体功能和性能尚未公开&#xff0c;因此无法对其好用程度做出明确评价。 然而&#xff0c;基于 Google 在人工智能领域的领先地位和技术实力&#xff0c;我们可以对其潜力进行一些推测&a…

系统设计到撸代码?我用了这些方法和工具

大家好&#xff0c;我是老猫。今天和大家分享一下程序员日常的绘图思路&#xff0c;以及一些老猫日常使用的绘图工具。 为什么要画图&#xff1f; 我们在进行系统设计的时候&#xff0c;为了更加具象地呈现系统的轮廓以及各个组件或者系统之间的关系和边界以及工作流程。我们…