当前位置: 首页 > 知识库问答 >
问题:

错误"您的客户端发出了格式错误或非法的请求",同时试图从youtube获取搜索结果

盛建德
2023-03-14

我正在尝试获取youtube搜索结果的页面。在这里,我输入了一个视频名称,我正在尝试获取搜索结果的html页面。

我使用http模块发送和接收数据。

var youtube_query=querystring.stringify({
  'search_query':'bangarang', //video name
  'spf':'navigate'

});

var options_you = {                     //headers for searching in youtube

  host:'www.youtube.com',
  path:'/results',
  method:'GET',
  headers: {
      'Content-Type': 'application/x-www-form-urlencoded',
      'Content-Length': Buffer.byteLength(youtube_query),
      'User-Agent': 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36'


  }

};


function getvid_id(vid_result){  
                                              //callback function for finding the getting the result page
      vid_result.setEncoding('utf8');
      vid_result.on('data', function (chunk) {
     console.log(chunk);
    });      
}

var youtube_request = http.request(options_you,getvid_id);

youtube_request.on('error', function(e) {
  console.log('problem with request: ' + e.message);
});

    youtube_request.write(youtube_query);
    youtube_request.end();

这是我收到的结果页

<!DOCTYPE html>
<html lang=en>
  <meta charset=utf-8>
  <meta name=viewport content="initial-scale=1, minimum-scale=1, width=device-wi
dth">
  <title>Error 400 (Bad Request)!!1</title>
  <style>
    *{margin:0;padding:0}html,code{font:15px/22px arial,sans-serif}html{backgrou
nd:#fff;color:#222;padding:15px}body{margin:7% auto 0;max-width:390px;min-height
:180px;padding:30px 0 15px}* > body{background:url(//www.google.com/images/error
s/robot.png) 100% 5px no-repeat;padding-right:205px}p{margin:11px 0 22px;overflo
w:hidden}ins{color:#777;text-decoration:none}a img{border:0}@media screen and (m
ax-width:772px){body{background:none;margin-top:0;max-width:none;padding-right:0
}}#logo{background:url(//www.google.com/images/branding/googlelogo/1x/googlelogo
_color_150x54dp.png) no-repeat;margin-left:-5px}@media only screen and (min-reso
lution:192dpi){#logo{background:url(//www.google.com/images/branding/googlelogo/
2x/googlelogo_color_150x54dp.png) no-repeat 0% 0%/100% 100%;-moz-border-image:ur
l(//www.google.com/images/branding/googlelogo/2x/googlelogo_color_150x54dp.png)
0}}@media only screen and (-webkit-min-device-pixel-ratio:2){#logo{background:ur
l(//www.google.com/images/branding/googlelogo/2x/googlelogo_color_150x54dp.png)
no-repeat;-webkit-background-size:100%
100%}}#logo{display:inline-block;height:54px;width:150px}
  </style>
  <a href=//www.google.com/><span id=logo aria-label=Google></span></a>
  <p><b>400.</b> <ins>ThatGÇÖs an error.</ins>
  <p>Your client has issued a malformed or illegal request.  <ins>ThatGÇÖs all w
e know.</ins>

我不能理解错误的网址的原因

共有1个答案

卫嘉泽
2023-03-14

检查您的内容长度行这会导致格式错误的url错误

'Content-Length': Buffer.byteLength(youtube_query)

如果你删除内容长度它的工作,但你可能最终得到301作为网址被移动。所以你可能需要使用跟随重定向模块

var http = require("follow-redirects").http;

或者您可以使用“请求”模块

 类似资料:
  • YouTube官方网站经常出错。如果我尝试,它在匿名模式下工作。这说明问题是由浏览器上的cookie/cache/localstorage/application数据引起的。 如果我删除数据,它将再次开始工作,但是,我将需要在我使用的所有gmail帐户中再次登录。 我已经要求谷歌(在反馈和推特上)对此进行调查,但他们无能为力。 因此,问题是: 如果有人遇到过这个问题,您是否已经了解了为什么以及如何

  • 我有一个函数,使用CURL和谷歌地图应用编程接口返回地址的坐标。 代码如下: 代码对我和我使用它的99%的网络服务器都很好,但是对于大约1%的服务器,谷歌会返回错误消息: 我已经检查过了,googleapi键是正确的,PHP CURL已启用,PHP版本与它正在使用的PHP版本匹配。 有人能想到其他可能导致谷歌返回此消息的因素吗?

  • 我一直在使用Django和Djangorest框架编程API,以便在Google App Engine中部署。API基本上是一个包注册表,因此您可以使用API创建、更新、获取和删除包。 所有endpoint似乎都工作,除了一个。唯一不起作用的终结点是显示在线注册表中所有包的分页列表的终结点。 所有endpoint都在工作,但由于某种原因,当我点击特定的endpoint“/packages/”时,G

  • 当我运行我的gRPC客户端,它试图将请求流式传输到服务器时,我收到了这个错误:"TypeError: has typelist_iterator,但期望其中之一:bytes, unicode" 我需要以某种方式对我发送的文本进行编码吗?错误消息有一定的意义,因为我肯定是在传入一个迭代器。我从gRPC留档中假设这是需要的。(https://grpc.io/docs/tutorials/basic/p

  • 问题内容: 我正在尝试使用以下行重新索引: 但是我在kibana控制台中遇到以下错误: 谁能告诉我这个问题是什么以及如何摆脱它。 问题答案: 504只是意味着请求仍在运行,但是从Kibana到ES的HTTP连接超时。 您仍然可以使用任务管理API来查看请求的执行情况,如下所示: