from utils.requests_pro import session_requests_b
时间: 2023-07-31 11:10:41 浏览: 51
您好!这段代码是从名为`requests_pro`的自定义模块中导入了名为`session_requests_b`的变量或函数。根据命名规则,很可能是一个用于创建会话的请求函数,以便在后续的HTTP请求中使用同一会话。`requests_pro`模块可能是开发者自己编写的,也可能是从第三方库中导入的。
相关问题
requests cookie
使用 requests 库发送 HTTP 请求时,可以通过不同的方法设置 cookie。
一种方法是使用 `requests.utils.add_dict_to_cookiejar` 方法,该方法可以将 cookie 字典添加到请求的 cookies 中,但不支持设置 path、domain 等值。示例代码如下:
```python
import requests
session = requests.session()
cookie_dict = {"ck3a":"333a","ck3b":"333b"}
requests.utils.add_dict_to_cookiejar(session.cookies, cookie_dict=cookie_dict)
get_url = "https://postman-echo.com/get"
res = session.get(url=get_url)
print("本次请求使用的cookie:", res.request.headers.get("Cookie"))
print("会话现有cookie:", dict(session.cookies))
```
另一种方法是通过 cookies 参数直接传递 cookie 字典,这种方法可以设置 path、domain 等值。示例代码如下:
```python
import requests
get_url = "https://postman-echo.com/get"
cookies = {"cka":"222a","ckb":"222b"}
res = requests.get(url=get_url, cookies=cookies)
print(res.json().get("headers").get("cookie"))
print(res.request.headers.get("Cookie"))
```
还可以使用 `session.cookies.set` 方法设置 cookie,该方法支持设置 path、domain 等值。示例代码如下:
```python
import requests
session = requests.session()
session.cookies.set("ck2", "222", path="/", domain="postman-echo.com")
get_url = "https://postman-echo.com/get"
res = session.get(url=get_url)
print("本次请求使用的cookie:", res.request.headers.get("Cookie"))
print("会话现有cookie:", session.cookies)
```
以上是三种常见的设置 requests cookie 的方法,具体使用哪种方法取决于你的需求。
requests源码解析
requests是一个Python HTTP客户端库,它被广泛使用来发送HTTP请求。下面是requests库的源码解析。
1. requests模块的导入
```python
import urllib3
import chardet
from . import __version__
from . import exceptions
from . import models
from . import sessions
from . import structures
from . import utils
from .models import Request
from .models import Response
from .exceptions import RequestException
```
- urllib3:是一个Python的HTTP客户端库,requests库的底层使用了urllib3库。
- chardet:是一个Python的字符编码检测库,requests库使用它来检测HTTP响应的字符编码。
- __version__:是requests库的版本号。
- exceptions:包含了requests库中的异常类。
- models:包含了requests库中的请求和响应模型。
- sessions:包含了requests库中的会话管理模块。
- structures:包含了requests库中的数据结构。
- utils:包含了requests库中的工具函数。
2. requests.get()方法的实现
我们以requests.get()方法的实现为例,来解析requests库的源码。
```python
def get(url, params=None, **kwargs):
kwargs.setdefault('allow_redirects', True)
return request('get', url, params=params, **kwargs)
```
- get方法接收三个参数:url,params,kwargs。其中,params是请求参数,kwargs是其他可选参数。
- kwargs中设置了默认值:allow_redirects=True,表示是否允许重定向。
- 在get方法中调用了request方法,发起了HTTP GET请求。
3. requests.request()方法的实现
```python
def request(method, url, **kwargs):
session = kwargs.pop('session', None)
response = Response()
response.method = method
response.url = url
request = Request(method=method.upper(), url=url, **kwargs)
request.session = session
request.response = response
request.send()
return response
```
- request方法接收三个参数:method,url,kwargs。其中,method是请求方法,url是请求的URL,kwargs是其他可选参数。
- session参数表示使用的会话管理器,如果这个参数为None,则使用默认的会话管理器。
- 首先,创建一个Response对象,并设置请求方法和URL。
- 然后,创建一个Request对象,并设置请求方法、URL和其他可选参数。
- 接着,将会话管理器赋值给Request对象的session属性,并将Response对象赋值给Request对象的response属性。
- 调用Request对象的send方法,发起HTTP请求。
- 最后,返回Response对象。
4. Request对象的send()方法的实现
```python
def send(self, **kwargs):
session = self.session or sessions.Session()
adapter = HTTPAdapter()
adapter.add_headers(self.headers)
session.mount(self.url, adapter)
self.response = session.send(self.prepare(), **kwargs)
```
- send方法接收一个kwargs参数,它是其他可选参数。
- 首先,获取会话管理器。如果Request对象的session属性不为None,则使用它;否则,创建一个新的会话管理器。
- 创建HTTPAdapter对象,并将Request对象的headers属性添加到HTTPAdapter对象中。
- 使用mount方法将HTTPAdapter对象挂载到会话管理器的指定URL上。
- 调用prepare方法,对请求进行预处理,生成完整的请求对象。
- 调用会话管理器的send方法,发起HTTP请求,并将响应结果赋值给Request对象的response属性。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)