#登录得到cookie
#带着cookie去请求到书架,得到书架上的内容
#把上面两个操作连起来
#使用session进行请求,session可以认为是一连串的请求,在此过程中cookie不会丢失,cookie相当于一种信物,让网站知道你是谁,而requests是一次性的,会丢失cookie
import requests
#会话
sessoin=requests.session()
#登录
data={'loginName': '13186246526',
'password': '021122www'
}
url='https://passport.17k.com/ck/user/login'
resp=sessoin.post(url,data=data)
#print(resp.text)
#print(resp.cookies)看cookie
#拿数据
#刚才那个session中是有cookies的
#正常操作:resp=sessoin.get('https://user.17k.com/ck/author/shelf?page=1&appKey=2406394919')
#print(resp.json())
#不正常,直接复制cookie:resp=requests.get('https://user.17k.com/ck/author/shelf?page=1&appKey=2406394919',headers={"Cookie":'GUID=4f6f7c39-6caf-4500-a041-3db20835f725; sajssdk_2015_cross_new_user=1; accessToken=avatarUrl=https%3A%2F%2Fcdn.static.17k.com%2Fuser%2Favatar%2F06%2F26%2F75%2F94097526.jpg-88x88%3Fv%3D1647514199000&id=94097526&nickname=wzc6&e=1663066752&s=dba2b630ce5d92ca; c_channel=0; c_csc=web; sensorsdata2015jssdkcross={"distinct_id":"94097526","$device_id":"17f9786200d779-0a96a803614e03-a3e3164-2073600-17f9786200e835","props":{"$latest_traffic_source_type":"直接流量","$latest_referrer":"","$latest_referrer_host":"","$latest_search_keyword":"未取到值_直接打开"},"first_id":"4f6f7c39-6caf-4500-a041-3db20835f725"}'})
print(resp.text)
#梨视频
'''首先进入网页,通过开发者工具得知源代码视频正确地址,再检查静态代码,静态代码中没有video,判断可能使用网页刷新脚本加载视频,所以在网络中抓取ajax,得到请求数据,对比预览和正确视频地址区别,并发现源网页地址与视频地址、get请求得到的视频地址关系,发现网页反扒,所以ua伪装+防盗链,'''
#拿到contId
#拿到videoStatus返回的json.secURL
#srcURl内容进行修改
#下载视频
import requests
headers={"User-Agent":'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.102 Safari/537.36',
#防盗链:Referer: https://www.pearvideo.com/video_1755372,我现在的请求的上一级必须是referer里的连接,不然说明请求不知道是从哪来的,不对劲,就不合理
#可以认为是溯源,当前请求的上一级是谁
'Referer': 'https://www.pearvideo.com/video_1755372'
}
url="https://www.pearvideo.com/video_1755372"
#拿到contId
contId=url.split('_')[1]
videoStatus=f"https://www.pearvideo.com/videoStatus.jsp?contId={contId}&mrd=0.30674926565433536"
#拿到videoStatus返回的json.secURL
resp=requests.get(videoStatus,headers=headers)
dic=resp.json()
#srcURl内容进行修改
srcUrl=dic['videoInfo']['videos']['srcUrl']
systemTime=dic['systemTime']
srcUrl=srcUrl.replace(systemTime,f'cont-{contId}')
#真实连接:https://video.pearvideo.com/mp4/adshort/20220317/cont-1755372-15845298_adpkg-ad_hd.mp4
#srcURl=https://video.pearvideo.com/mp4/adshort/20220317/1647585697695-15845298_adpkg-ad_hd.mp4
print(srcUrl)
#下载视频
with open('a.mp4','wb') as f:
f.write(requests.get(srcUrl).content)
#代理:通过第三方的一个机器去发送请求
import requests
#透明代理一般好用一些,代理就像代理人一样,你把请求给他,他去请求
#122.192.30.17:8080
proxies={
'http':'http://122.192.30.17:8080',
#网站是那种协议类型,就在代理前+那种,这个代理只使用http协议,不用https,所以使用https会报错
'https':'https://122.192.30.17:8080'
}
resp=requests.get('https://www.baidu.com',proxies=proxies)
resp.encoding='utf-8'
print(resp.text)