get请求常见问题解决

简介: 【10月更文挑战第2天】

get请求是最常用的请求方式之一,常见问题分析:
1、请求地址会存在带参数 与不带参数;
2、会存在请求地址重定向的情况,是否设置自动跳转
3、有时会访问国外或内外的情况,会用到正向(代理客户端,如找黄牛买票)与反向(代理服务端,中介租房)代理
补充为何使用代理:让服务端以为不是同一个客户端请求;防止真实地址被泄露
4、加鉴权——Basic Auth,部分接口正确,仍报401,可能是鉴权原因
5、关于ssl证书,跳过验证设置
6、关于超时配置设置

mport requests

# 1、发送get请求时不带参数
requests.get('https://httpbin.org/ip')

#发送get请求时带参数
# 等同于直接访问https://httpbin.org/ip/get?name=itly
requests.get('https://httpbin.org/get', params={
   'name': 'itly'})

#2、当访问接口发生301跳转时,可以设置允许或禁止跳转
requests.get('http://github.com/', allow_redirects=False)

#3、当发生get请求,加proxy
proxies = {
   'http': 'http://10.10.1.10:3128',
                'http': 'http://10.10.1.10:1080'
}
requests.get('https://httpbin.org/get', proxies=proxies)

# 4、发送get请求,加鉴权——Basic Auth
# 首先导入HTTPBasicAuth,一般导入语句写在.py文件的最前面
from requests.auth import HTTPBasicAuth
# 然后发送请求(用户与密码都是admin)
requests.get('https://api.github.com/user', auth=HTTPBasicAuth('user','password'))

#5、SSL证书(HTTPS):
#跳过12306 的证书验证,把 verify 设置为 False:
r = requests.get('https://kyfw.12306.cn/otn/', verify=False)
print r.text

#6、超时配置
1 、利用timeout参数来配置最大请求时间:
r = requests.get('https://github.com', timeout=5)


其他错误异常:

1、所有Requests显式抛出的异常都继承自:requests.exctptions.RequestException
2、遇到网络问题(如:DNS查询失败,拒绝连接等)时,requests会抛出一个 ConnectionError 异常
3、遇到罕见的无效HTTP响应时,Request则会抛出一个 HTTPError 异常
4、若请求超时,则抛出一个 Timeout 异常
5、若请求超过了最大的重写向次数,则会抛出一个 TooManyRedirects 异常

相关文章
|
11月前
|
机器学习/深度学习 存储 人工智能
人工智能与未来医疗:革命性技术的潜力与挑战
【10月更文挑战第2天】 本文探讨了人工智能在医疗领域的应用及其潜在影响。通过分析当前AI技术的发展现状以及在医学诊断、治疗和患者管理中的具体应用,揭示了这一技术如何提升医疗服务质量和效率。同时,讨论了AI在医疗领域所面临的伦理、隐私和安全等挑战,呼吁建立相应的监管和标准以确保其安全有效地发展。
303 4
|
11月前
|
安全 网络协议 Shell
学习干货|实战某次行业攻防应急响应
学习干货|实战某次行业攻防应急响应
286 4
|
11月前
|
安全 Java 编译器
关于 Python 3.13 你所需要知道的几点
关于 Python 3.13 你所需要知道的几点
252 14
关于 Python 3.13 你所需要知道的几点
|
11月前
|
前端开发 JavaScript 容器
霓虹灯数字时钟(可复制源代码)
本文展示了如何创建一个具有3D效果的霓虹灯数字时钟。通过HTML、CSS和JavaScript实现了一个动态更新时间的时钟,其中包含了字体定义、3D变换、过渡效果以及颜色动画等关键部分。最后提供了完整的代码供读者复制使用。
288 13
霓虹灯数字时钟(可复制源代码)
|
11月前
合成生物学:设计合成微生物组
【10月更文挑战第5天】合成生物学作为一门新兴的生物科学分支,正在为生物科学研究和技术应用带来革命性的变化。通过设计和合成微生物组,我们可以创造出具有特定功能的生物系统,为多个领域提供新的解决方案和可能性。随着技术的不断进步和应用领域的拓展,合成生物学必将在未来发挥更加重要的作用。
206 22
|
11月前
|
tengine 关系型数据库 MySQL
Tengine、Nginx安装MySQL数据库命令教程
本指南详细介绍了在Linux系统上安装与配置MySQL数据库的步骤。首先通过下载并安装MySQL社区版本,接着启动MySQL服务,使用`systemctl start mysqld.service`命令。若启动失败,可尝试使用`sudo /etc/init.d/mysqld start`。利用`systemctl status mysqld.service`检查MySQL的服务状态,确保其处于运行中。通过日志文件获取初始密码,使用该密码登录数据库,并按要求更改初始密码以增强安全性。随后创建一个名为`tengine`的数据库,最后验证数据库创建是否成功以及完成整个设置流程。
|
11月前
|
程序员 编译器 C语言
C中的 malloc 和C++中的 new 有什么区别
在C语言中,`malloc`函数用于在运行时分配内存,返回指向所分配内存的指针,需显式包含头文件 `<stdlib.h>`。而在C++中,`new`不仅分配内存,还对其进行构造初始化,且直接使用类型声明即可,无需额外包含头文件。`new`还支持数组初始化,能更好地融入C++的面向对象特性,而`malloc`仅作为内存分配工具。使用完毕后,`free`和`delete`分别用于释放`malloc`和`new`分配的内存。
291 21
|
11月前
|
机器学习/深度学习 人工智能 算法
量子模拟器:研究量子现象的新工具
【10月更文挑战第5天】量子模拟器作为一种新兴的研究工具,正在逐步改变我们对量子世界的认知。通过模拟复杂的量子系统行为,量子模拟器为量子物理学、化学、生物学等领域的研究提供了有力支持。未来,随着技术的不断进步和应用领域的拓展,量子模拟器有望在更多领域发挥重要作用,为我们揭示量子世界的更多奥秘。让我们共同期待量子模拟器在未来的发展中带来更多的惊喜和突破!
239 21
|
11月前
|
Java
Java Object 类详解
在 Java 中,`Object` 类是所有类的根类,每个 Java 类都直接或间接继承自 `Object`。作为所有类的超类,`Object` 定义了若干基本方法,如 `equals`、`hashCode`、`toString` 等,这些方法在所有对象中均可使用。通过重写这些方法,可以实现基于内容的比较、生成有意义的字符串表示以及确保哈希码的一致性。此外,`Object` 还提供了 `clone`、`getClass`、`notify`、`notifyAll` 和 `wait` 等方法,支持对象克隆、反射机制及线程同步。理解和重写这些方法有助于提升 Java 代码的可读性和可维护性。
366 20
|
11月前
|
机器学习/深度学习 人工智能 TensorFlow
利用AI技术实现智能垃圾分类
【8月更文挑战第67天】随着人工智能技术的不断发展,越来越多的应用场景开始涌现。本文将介绍如何利用AI技术实现智能垃圾分类,通过代码示例和实际应用案例,帮助读者了解AI技术在垃圾分类领域的应用价值和潜力。
779 19