爬虫 | 基于 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 md5def 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.mzph.cn/news/825148.shtml

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

相关文章

LeetCode in Python 1338. Reduce Array Size to The Half (数组大小减半)

数组大小减半思路简单,主要是熟悉python中collections.Counter的用法,采用贪心策略即可。 示例: 图1 数组大小减半输入输出示例 代码: class Solution:def minSetSize(self, arr):count Counter(arr)n, ans 0, 0for i, valu…

北大字节联合发布视觉自动回归建模(VAR):通过下一代预测生成可扩展的图像

北大和字节发布一个新的图像生成框架VAR。首次使GPT风格的AR模型在图像生成上超越了Diffusion transformer。 同时展现出了与大语言模型观察到的类似Scaling laws的规律。在ImageNet 256x256基准上,VAR将FID从18.65大幅提升到1.80,IS从80.4提升到356.4,推理速度提高了20倍。 相…

关于Jetson空间不足的解决问题(sd卡挂载和conda更改环境安装路径)

文章目录 问题描述挂载sd卡到指定目录查看conda路径更改环境路径指定路径安装conda虚拟环境 问题描述 因为在做毕设的时候,用到了Jetson,发现这个空间太小了,如果下conda的包根本不够用,所以就想挂载sd卡,然后把环境安…

国外GIS软件排名简介<30个>

简介 国外gisgeography网站进行了一次GIS软件排名,通过分析、制图、编辑等因素进行测试,具体规则如下: 分析:矢量/栅格工具、时态、地统计、网络分析和脚本。 制图:地图类型、坐标系、地图布局/元素、标注/注记、3D …

C#到底属于编译型语言还是解释型语言?

C#是一种编译型语言,也称为静态类型语言,这意味着C#代码在运行之前需要经过编译器的编译处理,并生成一个可执行的本地代码文件(通常是.exe或.dll文件)。相反,解释型语言将代码转换为低级代码后直接执行&…

计算机视觉——手机目标检测数据集

这是一个手机目标检测的数据集,数据集的标注工具是labelimg,数据格式是voc格式,要训练yolo模型的话,可以使用脚本改成txt格式,数据集标注了手机,标签名:telephone,数据集总共有1960张,有一部分是…

软件无线电安全之GNU Radio基础 -上

GNU Radio介绍 GNU Radio是一款开源的软件工具集,专注于软件定义无线电(SDR)系统的设计和实现。该工具集支持多种SDR硬件平台,包括USRP、HackRF One和RTL-SDR等。用户可以通过GNU Radio Companion构建流程图,使用不同…

BackTrader 中文文档(二十七)

原文:www.backtrader.com/ 数据 - 多个时间框架 原文:www.backtrader.com/blog/posts/2015-08-24-data-multitimeframe/data-multitimeframe/ 有时,使用不同的时间框架进行投资决策: 周线用于评估趋势 每日执行进入 或者 5 分钟…

软考132-上午题-【软件工程】-沟通路径

一、定义 1-1、沟通路径1 沟通路径 1-2、沟通路径2 沟通路径 n-1 二、真题 真题1: 真题2: 真题3:

发布 Chrome/Edge浏览器extension扩展到应用商店

Chrom Extension发布流程 创建和发布自定义 Chrome 应用和扩展程序:https://support.google.com/chrome/a/answer/2714278?hlzh-Hans 在 Chrome 应用商店中发布:https://developer.chrome.com/docs/webstore/publish?hlzh-cn 注册开发者帐号&#…

图解CPU的实模式与保护模式

哈喽,大家好,我是呼噜噜,好久没有更新old linux了,在上一篇文章Linux0.12内核源码解读(7)-陷阱门初始化中,我们简要地提及了中断,但是中断机制在计算机世界里非常重要,处处都离不开中断&#xf…

Element——组件

element官网 https://element.eleme.cn/#/zh-CN/component/layout vscode格式化快捷键&#xff1a;shiftaltf table表格 <template><el-table:data"tableData"style"width: 100%"><el-table-columnprop"date"label"日期…

Git使用总结(不断更新中)

branch 本地分支操作 删除本地分支 git branch -d <local-branch-name>远端分支操作 从远端分支创建本地分支 git checkout -b <local-branch-name> origin/<remote-branch-name>git ignore 如果工程的代码文件中有不希望上传到远端的文件&#xff0c;…

排列特征重要性(Permutation Feature Importance)

5个条件判断一件事情是否发生&#xff0c;每个条件可能性只有2种&#xff08;发生或者不发生&#xff09;&#xff0c;计算每个条件对这件事情发生的影响力。排列特征重要性模型的程序。 例一 在机器学习领域&#xff0c;排列特征重要性&#xff08;Permutation Feature Impor…

【honggfuzz学习笔记】honggfuzz的基本特性

本文架构 1.动机2.honggfuzz的基本概念官网描述解读 3. honggfuzz的反馈驱动(Feedback-Driven)软件驱动反馈&#xff08;software-based coverage-guided fuzzing&#xff09;代码覆盖率代码覆盖率的计量单位 代码覆盖率的统计方式 硬件驱动反馈&#xff08; hardware-based co…

CTFHUB RCE作业

题目地址&#xff1a;CTFHub 完成情况如图&#xff1a; 知识点&#xff1a; preg_match_all 函数 正则匹配函数 int preg_match_all ( string $pattern , string $subject [, array &$matches [, int $flags PREG_PATTERN_ORDER [, int $offset 0 ]]] )搜索 subject 中…

【Python小游戏】植物大战僵尸的实现与源码分享

文章目录 Python版植物大战僵尸环境要求方法源码分享初始化页面&#xff08;部分&#xff09;地图搭建&#xff08;部分&#xff09;定义植物类 &#xff08;部分&#xff09;定义僵尸类&#xff08;部分&#xff09;游戏运行入口 游戏源码获取 Python版植物大战僵尸 已有的植…

【Proteus】51单片机对直流电机的控制

直流电机&#xff1a;输出或输入为直流电能的旋转电机。能实现直流电能和机械能互相转换的电机。把它作电动机运行时是直流电动机&#xff0c;电能转换为机械能&#xff1b;作发电机运行时是直流发电机&#xff0c;机 械能转换为电能。 直流电机的控制&#xff1a; 1、方向控制…

动态多目标测试函数DF1-DF14,FDA1-FDA5,SDP1-SDP12的TurePOF(MATLAB代码)

动态多目标测试函数FDA1、FDA2、FDA3、FDA4、FDA5的turePOF&#xff08;MATLAB代码&#xff09; 动态多目标测试函数DF1-DF14的turePOF变化&#xff08;提供MATLAB代码&#xff09; 动态多目标测试函数SDP1-SDP12的TurePOF变化视频&#xff08;含MATLAB代码及参考文献&#xff…

Java Swing制作大鱼吃小鱼魔改版本

《大鱼吃小鱼》这款游戏的历史渊源可以追溯到休闲游戏的兴起和发展。在游戏的早期发展阶段&#xff0c;开发者们开始探索各种简单而有趣的游戏玩法&#xff0c;以吸引玩家的注意力。在这样的背景下&#xff0c;《大鱼吃小鱼》应运而生&#xff0c;它结合了自然界的食物链原理与…