1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > Python爬虫:(亲测 已解决!)解决在使用谷歌浏览器的开发者工具时 没有Referer防

Python爬虫:(亲测 已解决!)解决在使用谷歌浏览器的开发者工具时 没有Referer防

时间:2022-11-13 14:28:12

相关推荐

Python爬虫:(亲测 已解决!)解决在使用谷歌浏览器的开发者工具时 没有Referer防

今天,我在做Python网络爬虫时(web spider),正在爬取哔哩哔哩的某一个视频,发现一个致命问题,就是单纯在headers中加入UA(user-Agent)是不够的,也就是说,我的爬虫没有足够的权限全访问此网站,所以,我的headers还少了一些东西。

headers = {#'Accept-Encoding':'','user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36'}

我首先想到的是Referer防盗链,简单的来说,防盗链就是告诉哔哩哔哩的服务器,我是从哔哩哔哩官网跳转过来的,而不是从别的地方跳转,所以,以此来蒙掉哔哩哔哩服务器,以便获取数据。

但我,找了一圈后,却并没有找到Referer防盗链,这下可就尴尬了,到是多了一些之前从未见过的数据

例如:

sec-ch-ua:

"Chromium";v="21", " Not;A Brand";v="99"

sec-ch-ua-mobile:

?0

sec-ch-ua-platform:

"Windows

所以我怀疑,我的浏览器已经更新了,或者发生了其他错误,将我的Referer给弄没了,但其实,Referer还存在,只是我们看不到而已,所以,现在的问题,就成了

如何将Rederer重新显示出来

于是,我查阅了大量资料,观看了大量的CSDN的文章,总结出以下一点好用的方法:

1.在html的head标签中加入:

<meta name="Referrer" content="origin" />

那么我,问题又来了,我该怎么加?

一开始我毫无思绪,烦躁不已,但我当我冷静后,重新审视这个问题,我终于明白这其中奥妙。

那么,接下来,请跟着我的步骤走下去,慢慢的走,不要心急,慢慢揭开那神秘的面纱。

1。选择你要爬取的页面或者视频,在空白处右键,选择“查看网页源代码”(不同浏览器,这里会不一样。)

2.打开后,在鼠标右键,选择“网页另存为”,这样,我们在电脑中获得了一个以“.html”为后缀的html代码

3.更改后缀,将后缀".html"更改为“.txt”,以便我们添加<meta name="Referrer" content="origin" />

4.打开改好的文档。注意!!,一定要在<head>标签中加入<meta name="Referrer" content="origin" />,我们以下面某页面源代码为例:

<!-- saved from url=(0086)/video/BV1oY411p7Yr?vd_source=b305ecdc9ae3bd6e7c27b55794f9edd9 -->

<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"></head><body><div class="line-gutter-backdrop"></div><form autocomplete="off"><label class="line-wrap-control">自动换行<input type="checkbox" aria-label="自动换行"></label></form><table><tbody><tr><td class="line-number" value="1"></td><td class="line-content"><span class="html-doctype">&lt;!DOCTYPE html&gt;</span><span class="html-tag">&lt;html <span class="html-attribute-name">lang</span>="<span class="html-attribute-value">zh-Hans</span>"&gt;</span><span class="html-tag">&lt;head <span class="html-attribute-name">itemprop</span>="<span class="html-attribute-value">video</span>" <span class="html-attribute-name">itemscope</span> <span class="html-attribute-name">itemtype</span>="<span class="html-attribute-value">/VideoObject</span>"&gt;</span><span class="html-tag">&lt;meta <span class="html-attribute-name">name</span>="<span class="html-attribute-value">format-detection</span>"

我们需要在head标签中加入<meta name="Referrer" content="origin" />

所以,更改为以下形式:

<!-- saved from url=(0086)/video/BV1oY411p7Yr?vd_source=b305ecdc9ae3bd6e7c27b55794f9edd9 -->

<html><head><meta name="Referrer" content="origin" /><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"></head><body><div class="line-gutter-backdrop"></div><form autocomplete="off"><label class="line-wrap-control">自动换行<input type="checkbox" aria-label="自动换行"></label></form><table><tbody><tr><td class="line-number" value="1"></td><td class="line-content"><span class="html-doctype">&lt;!DOCTYPE html&gt;</span><span class="html-tag">&lt;html <span class="html-attribute-name">lang</span>="<span class="html-attribute-value">zh-Hans</span>"&gt;</span><span class="html-tag">&lt;head <span class="html-attribute-name">itemprop</span>="<span class="html-attribute-value">video</span>" <span class="html-attribute-name">itemscope</span> <span class="html-attribute-name">itemtype</span>="<span class="html-attribute-value">/VideoObject</span>"&gt;</span><span class="html-tag">&lt;meta <span class="html-attribute-name">name</span>="<span class="html-attribute-value">format-detection</span>"

5.更改好后,在将文档后缀更改为html,双击运行后即可。

这样当我们在回到我们要爬取的页面时,在按F12打开开发者工具时,在找到我们的数据包,即可发现,Referer就出现了。

那么,当我加上Referer后,我的爬虫代码也就通过了,什么,你想看我爬哔哩哔哩的爬虫的代码??满足你!

import requestsimport reimport jsonimport pprintimport osfilename = '哔哩哔哩//'if not os.path.exists(filename):os.makedirs(filename)url = '/video/BV1oY411p7Yr?vd_source=b305ecdc9ae3bd6e7c27b55794f9edd9'headers = {#'Accept-Encoding':'','Referer': '/video/BV1oY411p7Yr?vd_source=b305ecdc9ae3bd6e7c27b55794f9edd9','user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36'}response = requests.get(url=url,headers=headers).text#print(response)#数据解析:html_data = re.findall('<script>window.__playinfo__=(.*?)</script>',response)[0]#获取标题title = re.findall('<title data-vue-meta="true">(.*?)i</title>',response)[0]#print(html_data)json_data = json.loads(html_data)#print(json_data)pprint.pprint(json_data)audio_url = json_data['data']['dash']['audio'][0]['baseUrl']video_url = json_data['data']['dash']['video'][0]['baseUrl']print(audio_url)print(video_url)response2 = requests.get(url=audio_url,headers=headers).contentresponse3 = requests.get(url=video_url,headers=headers).contentwith open(filename+title+'.mp3',mode='wb') as f:f.write(response2)with open(filename+title+'.mp4',mode='wb') as f:f.write(response3)print("爬去完成!")

最后,如果,本文章有帮到你,那么请你送我一个免费的赞,好么QWQ(打字不易)

Python爬虫:(亲测 已解决!)解决在使用谷歌浏览器的开发者工具时 没有Referer防盗链缺失问题。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。