接受来自YouTube的Cookie同意

7
我正在尝试从YouTube频道检索视频列表,例如"https://www.youtube.com/user/YouTube/videos",以获取前n个视频(感谢key="videoId")。它曾经运行得很好,直到几天前开始要求我的同意。
我在Stack Overflow上尝试了很多方法,但都没有成功,我仍然看到消息要求我接受Cookie才能查看视频。
import requests
import re

url='https://www.youtube.com/user/YouTube/videos'
s1 = requests.session()
s1.get(url)
print("Original Cookies")
print(s1.cookies)
cookieValueNum = (re.findall(r'\d+', str(s1.cookies)))[0]
cookieValue = ('YES+cb.20210328-17-p0.en-GB+FX+'+str(cookieValueNum))
cookie = {'name': 'CONSENT', 'value': cookieValue, 'domain': '.youtube.com'}
print("==========")
print("After new Cookie added")
s1.cookies.update(cookie)
print(s1.cookies)
print(s1.get(url, cookies=cookie).text)

它仍然返回相同的消息,要求我同意使用cookie(显然是在html中,在私人会话中打开Youtube时得到的图片):

YT Consent

我的想法是复制“Consent” cookie 并将其发送回去,以便能够访问页面内容。 你有什么想法吗? 这个想法不是使用Youtube API,而只是在需要时请求/BeautifulSoup。

你能分享频道ID吗?因为我尝试使用这个code,当调用此频道视频URL时,我能够获取所有30个ID,例如此URL https://www.youtube.com/user/videos 没有同意的内容,我可以访问JSON数据,请按照此代码进行操作,看看是否可以通过或分享您遇到错误的频道ID。 - pb36
我无法在我的浏览器中重现那个同意消息的内容,否则通过查看网络请求就可以做些什么。编辑过的,你能分享一下你访问的IP地址所在的国家吗?这样我就可以尝试通过该国家的代理进行访问,看看我是否会得到相同的同意消息或者没有。 - pb36
该死,我使用了ipvanish的法国IP地址,甚至使用了无痕模式,以便不发送任何cookie,但它仍然直接将我重定向到视频页面,没有像你那样的同意消息。 - pb36
尝试完全禁用Cookies。 - Corvax
@Öskå 在你的帖子示例中存在问题,即你没有删除第一个响应 cookie,而是更新了它们。我不确定如何做到这一点,但 requests.get('https://www.youtube.com/user/YouTube/videos', cookies={'CONSENT': 'PENDING+999'}) 对我有效。 - Corvax
4个回答

10
你需要删除第一个响应cookies。我不确定如何在requests.session中执行此操作,但对我来说以下任何一种方法都可以。
requests.get('https://www.youtube.com/user/YouTube/videos', cookies={'CONSENT': 'PENDING+999'})

requests.get('https://www.youtube.com/user/YouTube/videos', cookies={'CONSENT': 'YES+cb.20210328-17-p0.en-GB+FX+{}'.format(random.randint(100, 999))})

5
我遇到了相同的问题 - 这里有一个解决方案,应该对您的情况起作用。
使用像Chrome这样的浏览器,您可以随时检查需要传递给接受Cookie的数据。您可以在开发者工具中找到这些信息 -> 应用程序 -> Cookie。 Google Chrome Cookie视图截图 通过这样做,您会发现YouTube期望是“YES”或“NO”,以及任何大于0的整数。
将这些信息传递给您的请求,就完成了。
requests.get('https://www.youtube.com/user/YouTube/videos', cookies={'CONSENT': 'YES+1'})

0

设置请求头如下:

headers = {
        'Authorization': 'authorization',
        'cookie': 'hl=en'
    }

使用Tor在所有请求中更改您的IP地址。 发送请求后,请检查响应。如果响应文本中存在“Before you continue”,则设置几秒钟的时间休眠(在此期间,您的IP地址将更改),然后再次发送请求。


0

谷歌很麻烦,试图通过这些技术来识别您。似乎没有其他方法可以避免同意Cookie - 或者您必须每次都同意。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接