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

news2024/9/30 16:00:24

文章目录

  • 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 requests

url = "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 requests

url = "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.coloradmin.cn/o/2180038.html

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

相关文章

执行力怎么培养?

执行力怎么培养? 并行:适合在初期养成习惯,不抱对结果的期望天才就是强迫症:适合中期修身:适合高级 并行:适合在初期养成习惯,不抱对结果的期望 在你开始做任何事情的时候,不要一开…

【STM32】 TCP/IP通信协议(1)--LwIP介绍

一、前言 TCP/IP是干啥的?它跟SPI、IIC、CAN有什么区别?它如何实现stm32的通讯?如何去配置?为了搞懂这些问题,查询资料可解决如下疑问: 1.为什么要用以太网通信? 以太网(Ethernet) 是指遵守 IEEE 802.3 …

基于Springboot+Vue的视频点播系统设计与实现登录 (含源码数据库)

1.开发环境 开发系统:Windows10/11 架构模式:MVC/前后端分离 JDK版本: Java JDK1.8 开发工具:IDEA 数据库版本: mysql5.7或8.0 数据库可视化工具: navicat 服务器: SpringBoot自带 apache tomcat 主要技术: Java,Springboot,mybatis,mysql,vue 2.视频演示地址 3.功能 系统中…

springboot工伤事故管理系统-计算机毕业设计源码04050

摘 要 工伤事故管理系统是为了提高企业对工伤事故的管理和处理能力而设计的。该系统主要利用现代技术手段构建一个全面、高效的工伤事故管理平台,帮助企业实现工伤事故的预防、记录、报告和分析。通过工伤事故管理系统,企业可以进行工伤事故的登记和记录…

pycharm汉化插件无法使用也无法卸载的解决方法

pycharm汉化插件无法使用也无法卸载的解决方法 本文目录: 一、故障描述 二、故障解决 零、时光宝盒 学习没有可能一帆风顺,我们都是在不断遇到的各种突发问题,不断努力解决的过程中成长。 前几天,我发现家里的网络晚上12点左右开…

VUE 开发——Node.js学习(一)

一、认识Node.js Node.js是一个跨平台JavaScript运行环境,使开发者可以搭建服务器端的JavaScript应用程序 使用Node.js编写服务器端程序——编写数据接口、前端工程化; Node.js环境没有BOM和DOM; Node.js安装:下载node-v16.19…

APO v0.5.0 发布:可视化配置告警规则;优化时间筛选器;支持自建的ClickHouse和VictoriaMetrics

APO 新版本 v0.5.0 正式发布!本次更新主要包含以下内容: 新增页面配置告警规则和通知 在之前的版本中,APO 平台仅支持展示配置文件中的告警规则,若用户需要添加或调整这些规则,必须手动编辑配置文件。而在新版本中&a…

如何构建一个生产级的AI平台(4)?

书接上回,继续往下讲,本节会说一下复杂逻辑,可观测性和Pipeline 添加复杂逻辑和写入操作 到目前为止,我们讨论的应用程序具有相当简单的流程。 基础模型生成的输出大多返回给用户(除非它们没有通过护栏)。 但是&…

工业交换机的RMON

工业交换机在现代网络中扮演着至关重要的角色,它不仅负责数据的高效传输,还具备强大的监控和管理能力。其中,RMON(远程监控)功能使得交换机的性能得以进一步提升,成为网络管理的重要工具。RMON提供了一种先…

讯时语音网关按线路对接配置方法(mod_cti基于FreeSWITCH)

文章目录 前言问题场景 联系我们解决方案创建分机语音网关反向注册对接创建线路创建线路组配置外呼的线路组配置语音网关查看线路是否有问题 前言 问题场景 语音网关中配置了10条电话线,但是有些电话线不定时会出现不能使用的情况,这很影响呼叫的质量。…

java后端项目技术记录

后端使用技术记录 一、软件1. apifox,API管理软件问题 2. nginx前端服务器(1) 反向代理(2) 负载均衡 二、问题1. 使用spring全局异常处理器处理特定的异常2. 扩展springmvc的消息转换器(对象和json数据的转换)3. 路径参数的接收4. 实体构建器…

墙绘交易平台:SpringBoot框架的设计与实现

摘 要 现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本墙绘产品展示交易平台就是在这样的大环境下诞生,其可以帮助管理者在短时间内处理完毕庞大的数据…

在双十一必买的好物有哪些?2024双十一好物必入清单推荐

随着2024年双十一购物狂欢节的临近,消费者们正热切期待着这一年度盛事的到来。作为一年中最具影响力的购物节日之一,双十一不仅为消费者带来了前所未有的优惠力度,更是各大品牌展示新品、推广好物的绝佳时机,在众多商品中&#xf…

【Leecode 随笔】C语言版看了不后悔系列持续更新中。。。

文章目录 题目一:最长回文子串题目描述:示例输入与输出:题目分析:解题思路:示例代码:深入剖析: 题目二:合并K个有序链表题目描述:示例输入与输出:题目分析&am…

GaussDB关键技术原理:高弹性(六)

书接上文GaussDB关键技术原理:高弹性(五)从日志多流和事务相关方面对hashbucket扩容技术进行了解读,本篇将从扩容实践方面继续介绍GaussDB高弹性技术。 5 扩容实践 5.1 工具介绍 5.1.1 TPC-C TPC-C(全称Transaction Proces…

【使用resnet18训练自己的数据集】

1.背景及准备 书接上文【以图搜图代码实现】–犬类以图搜图示例 总结了一下可以优化的点,其中提到使用自己的数据集训练网络,而不是单纯使用预训练的模型,这不就来了!! 使用11类犬类微调resnet18网络模型&#xff1a…

如何实现一个优秀的散列表!

文章内容收录到个人网站,方便阅读:http://hardyfish.top/ 文章内容收录到个人网站,方便阅读:http://hardyfish.top/ 文章内容收录到个人网站,方便阅读:http://hardyfish.top/ 前言 假设现在有一篇很长的…

python-pptx 中 placeholder 和 shape 有什么区别?

在 python-pptx 库中,placeholder 和 shape 是两个核心概念。虽然它们看起来相似,但在功能和作用上存在显著的区别。为了更好地理解这两个概念,我们可以通过它们的定义、使用场景以及实际代码示例来剖析其差异。 Python-pptx 的官网链接&…

08_OpenCV文字图片绘制

import cv2 import numpy as npimg cv2.imread(image0.jpg,1) font cv2.FONT_HERSHEY_SIMPLEXcv2.rectangle(img,(500,400),(200,100),(0,255,0),20) # 1 dst 2 文字内容 3 坐标 4 5 字体大小 6 color 7 粗细 8 line type cv2.putText(img,flower,(200,50),font,1,(0,0,250)…

Kubernetes从零到精通(17-扩展-Operator模式)

目录 一、简介 二、核心概念 三、工作原理 四、Operator Framework SDK示例 1.准备工作 2. 定义MySQLCluster CRD 3. 自定义资源实例 4. 编写控制器逻辑 5. 部署Operator 6. 验证 一、简介 Kubernetes中的Operator模式是一种用于简化和自动化管理复杂应用程序(尤其是…