gpt4 book ai didi

c# - YouTube视频信息通过浏览器和WebRequest C#返回不同的结果

转载 作者:行者123 更新时间:2023-12-03 05:55:08 25 4
gpt4 key购买 nike

我正在使用webrequests使用URL http://youtube.com/get_video_info?video_id={ID HERE}从YouTube获取视频数据

当我使用浏览器访问URL时,它将下载响应文件,并且所有需要的数据都已存在。但是,当我使用HttpWebRequest通过适当的UserAgent下载响应时,很多数据丢失了。

不存在的数据主要涉及语言环境信息,浏览器版本信息(我认为该信息将带有正确的UserAgent字符串,但我想不是)以及引用从请求创建的事件的ID。

我的问题是:为什么浏览器下载的版本与WebRequest相比,这些数据为何存在?如何查看浏览器发送的内容与我创建的请求不同?

这是我当前在C#中请求数据的方式:

        var url = string.Format("http://youtube.com/get_video_info?video_id={0}", videoId);
var request = (HttpWebRequest)WebRequest.Create(url);
request.UserAgent = userAgent;
var response = request.GetResponse();

string contents;
using (var sr = new StreamReader(response.GetResponseStream()))
contents = sr.ReadToEnd();

最佳答案

标准WebRequest和浏览器请求发送不同的 header 。您必须正确准备WebRequest(设置正确的 header 和cookie)以发出相同的HTTP请求。

若要查看差异,请下载Fiddler并在浏览器中打开相同的URL,然后在Visual Studio中以原始文本模式比较两个请求。您会注意到,WebRequest缺少许多标题。

关于c# - YouTube视频信息通过浏览器和WebRequest C#返回不同的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45134574/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com