【Python|接口自动化测试】使用requests发送http请求时添加headers

文章目录

  • 1.前言
  • 2.HTTP请求头的作用
  • 3.在不添加headers时
  • 4.反爬虫是什么?
  • 5.在请求时添加headers

1.前言

本篇文章主要讲解如何使用requests请求时添加headers,为什么要加headers呢?是因为有些接口不添加headers时,请求会失败。

2.HTTP请求头的作用

HTTP请求头(Request Headers)是HTTP请求中的一部分,它们携带了客户端发送到服务器的信息。这些信息可以帮助服务器更好地处理客户端的请求。请求头位于HTTP请求的方法行之后,消息体之前。它们提供了关于客户端环境和请求的具体配置的信息,比如用户代理信息、语言偏好设置、认证凭据等。
headers的内容如下(headers里面的键值对可以自定义):
在这里插入图片描述

3.在不添加headers时

接口URL:https://movie.douban.com/j/search_subjects
请求方法:GET
请求参数:
在这里插入图片描述
接口返回数据:
在这里插入图片描述
使用requests发送请求:

import requestsurl = "https://movie.douban.com/j/search_subjects"
params = {"type":"movie","tag": "热门","page_limit": 50,"page_start":0
}
r = requests.get(url=url, params=params)
print(r.status_code)
print(r.json())

运行结果如下:
在这里插入图片描述
这里的得到了HTTP的状态码是418,是因为网站拥有反爬虫机制,先来认识一下什么是反爬虫。

4.反爬虫是什么?

反爬虫(Anti-Web Scraping)是指网站采取的一系列措施和技术手段,旨在阻止或限制自动化程序(如网络爬虫或机器人)对网站内容的抓取。这是因为有些网站不希望自己的内容被未经授权的方式大量复制或使用,以保护自己的版权、数据安全或者用户体验。下面是一些常见的反爬虫策略:

  1. User-Agent检测

    • 网站会检查请求中的User-Agent字段,以识别出那些明显属于自动化工具的请求,并拒绝这些请求。
  2. IP地址封禁

    • 如果某个IP地址在短时间内发送了大量请求,可能会被认定为爬虫并被封禁一段时间。
  3. 验证码(CAPTCHA)

    • 当检测到可疑活动时,网站可能会要求用户通过验证码来证明自己不是机器人。
  4. JavaScript渲染

    • 一些网站使用JavaScript动态加载内容,使得简单的HTTP请求无法获取完整的页面内容。
  5. 请求频率限制(Rate Limiting)

    • 对于API接口,网站可能设置每分钟或每天的最大请求数,超过这个数量就会拒绝服务。
  6. Cookies和Session ID

    • 使用Cookies和Session ID来跟踪用户行为,如果发现异常行为,则可能阻止该用户继续访问。
  7. 伪装内容

    • 向爬虫显示不同的内容或错误信息,以迷惑爬虫。
  8. 加密和混淆

    • 使用加密技术或混淆JavaScript代码,使爬虫难以解析数据。

5.在请求时添加headers

解决上述问题,我们可以模拟浏览器来发送请求
在刚才的headers中有一个User- Agent字段,用来描述客户端软件的身份信息。这个字符串通常包含了客户端浏览器的名称、版本号、支持的操作系统以及其他相关信息。
在这里插入图片描述
定义一个变量来存放User-Agent的值,然后在请求中传参即可
代码如下:

import requestsurl = "https://movie.douban.com/j/search_subjects"
params = {"type":"movie","tag": "热门","page_limit": 50,"page_start":0
}
headers = {"user-agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/129.0.0.0 Safari/537.36"
}
r = requests.get(url=url, params=params, headers=headers)
print(r.status_code)
print(r.json())

requests中有一个**kwargs
在这里插入图片描述
这里底层是调用的request方法
在request方法中可以看到headers这个参数
在这里插入图片描述
运行结果:
在headers中添加user-agent之后,请求就能正常返回了
在这里插入图片描述

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

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

相关文章

Windows上 minGW64 编译 libssh2库

下载libssh2库:https://libssh2.org/download/libssh2-1.11.0.zip 继续下载OpenSSL库: https://codeload.github.com/openssl/openssl/zip/refs/heads/OpenSSL_1_0_2-stable

java中创建不可变集合

一.应用场景 二.创建不可变集合的书写格式(List,Set,Map) List集合 package com.njau.d9_immutable;import java.util.Iterator; import java.util.List;/*** 创建不可变集合:List.of()方法* "张三","李四","王五…

SpringBoot中间件Docker

Docker(属于C/S架构软件) 简介与概述 1.Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。 Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux …

登 Nature 子刊!论文一作详解蛋白质语言模型的小样本学习方法,解决湿实验数据匮乏难题

在「Meet AI4S」系列直播第三期中,我们有幸邀请到了上海交通大学自然科学研究院 & 上海国家应用数学中心博士后周子宜, 他所在的上海交通大学洪亮课题组研究方向主要为 AI 蛋白和药物设计、分子生物物理。该课题组研究成果颇丰,截止目前共…

【AI副业项目】揭密AI技术对于儿童古诗文项目的应用

大家都知道,古诗文作为中华文化的瑰宝,承载着丰富的历史情感和智慧。但是,在现代社会快节奏的生活中,如何让更多人尤其是少年儿童感受到古诗文的魅力,成为了一个极需解决的问题。 AI技术的兴起为这一难题提供了新的解…

【D3.js in Action 3 精译_025】3.4 让 D3 数据适应屏幕(中)—— 线性比例尺的用法

当前内容所在位置(可进入专栏查看其他译好的章节内容) 第一部分 D3.js 基础知识 第一章 D3.js 简介(已完结) 1.1 何为 D3.js?1.2 D3 生态系统——入门须知1.3 数据可视化最佳实践(上)1.3 数据可…

【Python】Streamlit:为数据科学与机器学习打造的简易应用框架

Streamlit 是一个开源的 Python 库,专为数据科学家和机器学习开发者设计,旨在快速构建数据应用。通过简单的 Python 脚本,开发者无需掌握前端技术,即可将数据分析和模型结果转化为直观、交互式的 Web 应用。其简洁的 API 设计使得…

MATLAB下的RSSI定位程序,二维平面上的定位,基站数量可自适应

文章目录 引言程序概述程序代码运行结果待定位点、锚点、计算结果显示待定位点和计算结果坐标 引言 随着无线通信技术的发展,基于 R S S I RSSI RSSI(接收信号强度指示)的方法在定位系统中变得越来越流行。 R S S I RSSI RSSI定位技术特别适…

Android车载——VehicleHal初始化(Android 11)

1 概述 VehicleHal是AOSP中车辆服务相关的hal层服务。它主要定义了与汽车硬件交互的标准化接口和属性管理,是一个独立的进程。 2 进程启动 VehicleHal相关代码在源码树中的hardware/interfaces/automotive目录下 首先看下Android.bp文件: cc_binary …

【Linux的那些事】shell命名及Linux权限的理解

目录 一、shell命令以及运行原理 二、Linux权限的概念 三、Linux权限管理 3.1.文件访问者的分类(人) 3.2.文件类型和访问权限(事物属性) 3.3.文件权限值的表示方法 3.4.文件访问权限的相关设置方法 a)chmod b)chown c)…

【Spring Boot React】Spring Boot和React教程 完整版

【Spring Boot & React】Spring Boot和React教程 在B站找到一个不错的SpringBoot和React的学习视频,作者是amigoscode 【Spring Boot & React】Spring Boot和React教程 2023年更新版【Spring Boot React】价值79.9美元,全栈开发,搭…

Luminar激光雷达公司裁员重组的深度分析

在科技行业风起云涌的今天,每一家企业都面临着前所未有的挑战与机遇。当地时间9月23日,美国激光雷达领域的领军企业Luminar Technologies向美国证券交易委员会(SEC)提交了一份8-K报告,正式宣布了一项重大的业务重组计划,其核心内容是通过进一步裁员来优化成本结构,以期在…

windows上安装python环境

前言 最近电脑重装了系统,需要重新安装python环境 ,因此记录一下 1.下载 打开python官网下载,下载链接:https://www.python.org/downloads/windows/ 点击下载 ,我这里使用64位操作系统(大部分电脑),根据…

快速上手C语言【上】(非常详细!!!)

目录 1. 基本数据类型 2. 变量 2.1 定义格式 和 命名规范 2.2 格式化输入和输出(scanf 和 printf) ​编辑 2.3 作用域和生命周期 3. 常量 4. 字符串转义字符注释 5. 操作符 5.1 双目操作符 5.1.1 算数操作符 5.1.2 移位操作符 5.1.3 位操作符…

为Floorp浏览器添加搜索引擎及搜索栏相关设置. 2024-10-05

Floorp浏览器开源项目地址: https://github.com/floorp-Projects/floorp/ 1.第一步 为Floorp浏览器添加搜索栏 (1.工具栏空白处 次键选择 定制工具栏 (2. 把 搜索框 拖动至工具栏 2.添加搜索引擎 以添加 搜狗搜索 为例 (1.访问 搜索引擎网址 搜狗搜索引擎 - 上网从搜狗开始 (2…

Java 网络编程基础

网络通信三要素 此笔记来之与黑马.B站的视频是真的高 基本的通信架构 基本的通信架构有2种形式:CS架构(Client 客户端/ Server 服务端)、BS架构( Browser 浏览器/ Server 服务端)。 IP 地址 IP(InternetProtocol)&a…

关于Zipf定律与TF—IDF的一个实践

在这篇文章中,我将通过机器学习中的线性回归来计算zipf定律中一个经验常数alpha,还会画TF-IDF的图像,此外还将简单介绍下与zipf、TF-IDF有关的知识。 在之前的一篇文章中我曾介绍过TF-IDF,但之后我又阅读了Ricardo Baeza-Yates和…

PELT算法

PELT算法的范畴 PELT算法(Pruned Exact Linear Time)属于时间序列分析和变点检测(Change Point Detection)范畴的算法。 从更广泛的角度来看,PELT算法还可以归类为以下几类算法的子集: 1. 时间序列分析&…

【数据结构】什么是红黑树(Red Black Tree)?

🦄个人主页:修修修也 🎏所属专栏:数据结构 ⚙️操作环境:Visual Studio 2022 目录 📌红黑树的概念 📌红黑树的操作 🎏红黑树的插入操作 🎏红黑树的删除操作 结语 📌红黑树的概念 我们之前学过了…

codetop标签树刷题(四)!!暴打面试官!!!!

用于个人复习 1.二叉树的右视图2.二叉树最大宽度3.二叉树的最大深度4.N叉树的最大深度5.二叉树的最小深度6.子树的最大平均值7.求根节点到叶节点的数字之和8.另一棵树的子树9.对称二叉树 1.二叉树的右视图 给定一个二叉树的根节点root,想象自己站在它的右侧&#x…