首页 > 其他分享 >10、爬虫-requests的使用-session()、防盗链

10、爬虫-requests的使用-session()、防盗链

时间:2024-07-01 22:32:50浏览次数:24  
标签:10 cont url session https 1733706 requests 防盗链

#会话-cookie的使用

requests.session()

"""
先登录网站、找到llogin相关的url 得到cookie、拿到format Data中的信息
带着cookie去请求url
使用cookie去访问(session-会话)该网站其它内容的时候都会带着cookie
"""

import requests

#创建会话
session = requests.session()
#用户的登录信息
headers = {
    "User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36",
    "Cookie:":"_uab_collina=170453738541714545106624; JSESSIONID=5A020EC4AD7C575B147D2B3FEDB2DF65; guidesStatus=off; highContrastMode=defaltMode; cursorStatus=off; BIGipServerpassport=820510986.50215.0000; route=c5c62a339e7744272a54643b3be5bf64; BIGipServerotn=2145911050.24610.0000"
}

#这是payload里的form Data参数
data = {
    "randCode": "409615",
    "username": "18289412452",
    "password": "@k2oOLSlRNqh2M1wq92gu2g==",
    "appid": "otn"
}

#登录页面的url
url = "https://kyfw.12306.cn/passport/web/login"

#使用post方式请求网站、并带上参数、这里使用session.post 请求的时候 保存了会话信息、下次在请求该网站的内容的时候就不需要cookies了
response = session.post(url,data=data)
#获取登录信息
print(response.text)
#获取cookie
#response.cookies

#在使用上面的session去请求网站内的其他内容,可以不用在登录
response2 = session.get("http://xxxx")
print(response2.json())

#上面的第二步相当于、带上cookie去请求
requests.get("http://xxxx", headers=headers)

 

防盗链:Referer

概念:追溯到上一级链接、从当前等级的上一级链接

案例:下载视频

"""
爬取视频

视频的下载链接
https://video.pearvideo.com/mp4/short/20210630/cont-1733706-15707553-hd.mp4

#视频XHR获取的链接
videoStatusUrl = "https://www.pearvideo.com/videoStatus.jsp?contId=1733706&mrd=0.500048304867837"       #headers中的Request URL:
srcUrl = "https://video.pearvideo.com/mp4/short/20210630/1705128822506-15707553-hd.mp4"         #Previwe中的srcurl

#视频的网页链接
url = "https://www.pearvideo.com/video_1733706"

可以看到:下载的原链接 cont-1733706-15707553 是关键项
将srcurl中的 1705128639745 替换为 url中的1733706 加上cont即可获得一个完整的下载链接:cont-1733706
"""
import requests

headers = {
    "User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36",

    #防盗链
    "Referer":"https://www.pearvideo.com/video_1733706"
}

#视频的网页链接
url = "https://www.pearvideo.com/video_1733706"


#将url中的video编码1733706提出来
cont_id = url.split("_")[1]

#将拿到的cont_id拼接到srcurl中
srcurl=f"https://www.pearvideo.com/videoStatus.jsp?contId={cont_id}&mrd=0.500048304867837"

#获取视频下载链接中带有下载地址的json
response = requests.get(srcurl,headers=headers)
#print(response.json())

#从json中获取需要的字段元素、srcurl和systemTime
dic = response.json()   #保存在字典中
systemtime = dic["systemTime"]
srcUrl = dic["videoInfo"]["videos"]["srcUrl"]

#拼接下载链接
vedio_link = srcUrl.replace(systemtime, f"cont-{cont_id}")
#print(vedio_link)

#下载视频
with open("F:\\a.mp4", "wb") as file:
    file.write(requests.get(vedio_link).content)

标签:10,cont,url,session,https,1733706,requests,防盗链
From: https://www.cnblogs.com/littlecc/p/17962414

相关文章

  • YOLOv10改进教程|C2f-CIB加入注意力机制
      一、导读    论文链接:https://arxiv.org/abs/2311.11587    代码链接:GitHub-CV-ZhangXin/AKConv YOLOv10训练、验证及推理教程二、C2f-CIB加入注意力机制2.1复制代码        打开ultralytics->nn->modules->block.py文件,复制SE......
  • 代码随想录算法训练营第九天|232.用栈实现队列、225.用队列实现栈、 20.有效的括号、1
    文章目录232.用栈实现队列思路--直接模拟225.用队列实现栈解法一、两个队列模拟解法二、一个队列模拟20.有效的括号栈模拟1047.删除字符串中的所有相邻重复项解法一、栈解法二、双指针232.用栈实现队列题目链接:232.用栈实现队列-力扣(LeetCode)题目描述:请你仅......
  • 随机生成50个0-100之间的数字,生成对应个数的随机字母,再按数字大小从小到大排序最后写
    importjava.util.ArrayList;importjava.util.Collections;importjava.util.List;importjava.util.Random;importjava.io.FileNotFoundException;importjava.io.PrintStream;publicclassRandomNum{publicstaticvoidmain(String[]args)throwsFileNotF......
  • LibreOJ 3910 「PA 2022」Mędrcy
    考虑找一下走掉的条件:若\(x\)第\(1\)天走掉,那么就说明\(x\)没有知道任何咒语。若\(x\)第\(2\)天走掉,那么就说明应该存在一个\(y\),按照\(x\)已知的信息,\(y\)应该没有掌握咒语,但是\(y\)第一天没走。若\(x\)第\(3\)天走掉,那么就说明应该存在一个\((y,z)\)......
  • 【git】github如何上传超过100MB大小的单个文件
    在使用GitHub进行版本控制时,默认情况下,单个文件的大小限制为100MB。如果你需要上传超过这个大小的文件,可以使用GitLFS(LargeFileStorage)。GitLFS是一种Git扩展,专门用于处理大文件,它将大文件替换为轻量级的指针,并将实际的文件内容存储在远程服务器上。1.安装从Git2......
  • ARM Cortex-A 与 STM32 F107
    ARMCortex-A和STM32F107是两种不同的微控制器架构,它们在性能、应用场景和硬件支持方面有很大的差异。以下是它们的详细比较和分析:1.基本特性比较ARMCortex-A系列ARMCortex-A是ARM架构中的高级应用处理器系列,专为复杂的计算任务和高级应用设计。它广泛用于智能手机、......
  • 信息学奥赛一本通C++版 1081:分苹果 答案
    目录【链接】【题目描述】【输入】【输出】【输入样例】【输出样例】【答案】【链接】1081:分苹果1081:分苹果【题目描述】把一堆苹果分给n个小朋友,要使每个人都能拿到苹果,而且每个人拿到的苹果数都不同的话,这堆苹果至少应该有多少个?【输入】一个不大于1000的......
  • 奥赛一本通C++版 1057解题思路(附加答案)
    链接:http://ybt.ssoier.cn:8088/problem_show.php?pid=1057题目:解题思路:先定义两个整型变量a和b,一个字符变量c,依次输入a,b,c。接着判断输入的运算符号是否等于+ || - || * || /(注意,这里的符号用单引号括起来)。如果运算符号等于加号,则进行加法运算,把a和b相加,......
  • Leetcode秋招冲刺(专题10--12)
    专题10:动态规划题目509:斐波那契数(NO)解题思路:动态五部曲动态五部曲:这里我们用一个一维数组来保存递归的结果确定dp数组以及下标的含义dp[i]的定义为:第i个数的斐波那契数值是dp[i]确定递推公式这道题已经把递推公式直接给了:状体转移方程dp[i]=dp[i-1]+dp[i-2];dp数......
  • (参数)AFE58JD32LPZAV超声波 AFE、模数转换器ADC09SJ800AAV 800MSPS ADC、ADS52J65IRGC
    1、AFE58JD32LPZAV是一款具有18.5mW/通道功率、数字解调器以及JESD204B和LVDS接口的32通道超声波AFE。AFE58JD32LP是高度集成的模拟前端(AFE)解决方案,专用于需要高性能、低功耗和小尺寸特性的便携式超声波系统。规格位数:10,12通道数:32功率(W):18.5mW电压-供电,模拟......