当前位置:   article > 正文

请求头中的Cookie和Referer(学习笔记)

请求头中的Cookie和Referer(学习笔记)

Cookie

        Cookie 是保存在客户端(通常是浏览器)上的一个小型文本文件。它由服务器发送,并且在之后的每次请求中,客户端都会自动将这个 Cookie 附带到请求头中,发送回服务器。

        在用户登录之后,为了能够准确地获取到用户的登录信息,服务器通常会生成一个唯一的 Session ID,并将其存储在 Cookie 中。这个 Cookie 会跟随请求头一起提交到服务器。这样,服务器就能够识别出这是哪一个用户,从而返回相应的数据。

        可以使用  模块 requests 的 session来模拟这种行为。session 对象会自动管理和维护服务器返回的 Cookie。具体来说,当你使用 session 对象发送请求时,服务器返回的 Cookie 会被自动保存,并且在后续请求中,session 对象会自动附带这些 Cookie。

  1. import requests
  2. # 创建一个session对象
  3. session = requests.Session()
  4. # 准备用户名和密码
  5. data = {
  6. "username": "testuser",
  7. "password": "testpass"
  8. }
  9. # 设置User-Agent
  10. headers = {
  11. "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.141 Safari/537.36"
  12. }
  13. # 登录请求
  14. login_url = "https://httpbin.org/post"
  15. response = session.post(login_url, data=data, headers=headers)
  16. # 检查状态码
  17. if response.status_code == 200:
  18. print("登录请求成功,状态码:", response.status_code)
  19. else:
  20. print("登录请求失败,状态码:", response.status_code)
  21. # 打印响应内容
  22. print("登录响应内容:", response.json())
  23. # 查看session中保存的cookies
  24. print("Cookies:", session.cookies)
  25. # 带着cookie请求另一个页面
  26. response2 = session.get("https://httpbin.org/cookies")
  27. if response2.status_code == 200:
  28. print("获取Cookies页面请求成功,状态码:", response2.status_code)
  29. else:
  30. print("获取Cookies页面请求失败,状态码:", response2.status_code)
  31. # 打印获取Cookies页面的响应内容
  32. print("获取Cookies页面响应内容:", response2.json())

登录请求成功,状态码: 200
登录响应内容: {'args': {}, 'data': '', 'files': {}, 'form': {'password': 'testpass', 'username': 'testuser'}, 'headers': {'Accept': '*/*', 'Accept-Encoding': 'gzip, deflate', 'Content-Length': '35', 'Content-Type': 'application/x-www-form-urlencoded', 'Host': 'httpbin.org', 'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.141 Safari/537.36', 'X-Amzn-Trace-Id': 'Root=1-669a74c2-2f1473ba4669055015c87eba'}, 'json': None, 'origin': '18.163.49.25', 'url': 'https://httpbin.org/post'}
Cookies: <RequestsCookieJar[]>
获取Cookies页面请求成功,状态码: 200
获取Cookies页面响应内容: {'cookies': {}}

Referer

        防盗链,本次的请求是由哪个url产生。 

  1. import requests
  2. # 视频页面URL
  3. url = "https://www.某视频.com/video_1795272"
  4. # 从URL中提取视频ID
  5. contId = url.split("_")[1]
  6. # 构造视频状态的URL
  7. videoStatus_url = f"https://www.某视频.com/videoStatus.jsp?contId={contId}&mrd=0.8097797275308494"
  8. headers = {
  9. "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) "
  10. "AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36 Edg/126.0.0.0",
  11. "Referer": url
  12. }
  13. # 发送GET请求,获取视频状态信息
  14. response = requests.get(videoStatus_url, headers=headers)
  15. response_data = response.json()
  16. # 从返回的数据中提取系统时间和视频URL
  17. systemTime = response_data['systemTime']
  18. videoUrl = response_data["videoInfo"]['videos']['srcUrl']
  19. # 替换URL中的时间戳部分,拼接出真正的视频URL地址
  20. videoUrl = videoUrl.replace(systemTime, f"cont-{contId}")
  21. print("视频URL:", videoUrl)
  22. # 下载视频并保存为文件
  23. video_content = requests.get(videoUrl).content
  24. video_filename = f"{contId}.mp4"
  25. with open(video_filename, mode="wb") as f:
  26. f.write(video_content)
  27. print(f"视频已下载并保存为 {video_filename}")

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/码创造者/article/detail/869094
推荐阅读
相关标签
  

闽ICP备14008679号