简体   繁体   English

你如何使用npm请求模块来获取当前在Postman中工作的节点?

[英]How do you get node using npm request module to work that currently works in Postman?

First there have been many questions similar to this one but none of them have solved my problem. 首先,有许多问题与此类似,但没有一个问题解决了我的问题。

Windows 10 x64 Node 12.6.0 request 2.88.0 Postman 7.2.2 Windows 10 x64节点12.6.0请求2.88.0 Postman 7.2.2

Postman has a feature to generate code for npm request. 邮递员具有为npm请求生成代码的功能。

Postman works fine and returns data. 邮差工作正常并返回数据。 In code the post works and the body returns the api info but with no data. 在代码中,帖子工作,并且正文返回api信息,但没有数据。

Here is the code I am using 这是我正在使用的代码

var request = require("request");

var options = { method: 'POST',
    url: 'https://www.netflix.com/api/shakti/v73fa49e3/pathEvaluator',
    qs:
        { drmSystem: 'widevine',
            isWatchlistEnabled: 'false',
            isVolatileBillboardsEnabled: 'true',
            falcor_server: '0.1.0',
            withSize: 'true',
            materialize: 'true' },
    headers:
        { 'cache-control': 'no-cache',
            'Content-Length': '754',
            Host: 'www.netflix.com',
            'Cache-Control': 'no-cache',
            'X-Netflix.browserName': 'Chrome',
            'X-Netflix.osVersion': '10.0',
            'X-Netflix.playerThroughput': '58194',
            Referer: 'https://www.netflix.com/browse/my-list',
            Accept: '*/*',
            'Content-Type': 'application/x-www-form-urlencoded',
            'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36',
            'X-Netflix.esnPrefix': 'NFCDCH-02-',
            'X-Netflix.uiVersion': 'v73fa49e3',
            'X-Netflix.browserVersion': '75',
            Connection: 'keep-alive',
            'X-Netflix.clientType': 'akira',
            'Accept-Language': 'en-US,en;q=0.9,es;q=0.8',
            'Accept-Encoding': 'gzip, deflate, br',
            DNT: '1',
            'X-Netflix.osFullName': 'Windows 10',
            Origin: 'https://www.netflix.com' },
    form:
        { path:
                [ '["mylist",["id","length","name","requestId","trackIds"]]',
                    '["mylist",{"from":0,"to":400},["availability","availabilityEndDateNear","delivery","interactiveBookmark","maturity","numSeasonsLabel","queue","releaseYear","runtime","seasonCount","summary","title","userRating","userRatingRequestId"]]',
                    '["mylist",{"from":0,"to":400},"current",["hasAudioDescription","summary"]]',
                    '["mylist",{"from":0,"to":400},"boxarts","_233x131","webp"]' ],

request(options, function (error, response, body) {
    if (error) throw new Error(error);

    console.log(body);
});

This might help you. 这可能对你有帮助。

const request = require("request");

// URL 
const reqUrl = 'https://www.netflix.com/api/shakti/v73fa49e3/pathEvaluator';

// HEADERS 
const reqHeaders = {
  'cache-control': 'no-cache',
  'Content-Length': '754',
  Host: 'www.netflix.com',
  'Postman-Token': '845e51a3-67cf-4d93-8518-997a7e22f4b7,edf531a3-056c-493e-86b4-3003504214ff',
  'Cache-Control': 'no-cache',
  'X-Netflix.browserName': 'Chrome',
  'X-Netflix.osVersion': '10.0',
  'X-Netflix.playerThroughput': '58194',
  Referer: 'https://www.netflix.com/browse/my-list',
  Accept: '*/*',
  'Content-Type': 'application/x-www-form-urlencoded',
  'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36',
  'X-Netflix.esnPrefix': 'NFCDCH-02-',
  'X-Netflix.uiVersion': 'v73fa49e3',
  'X-Netflix.browserVersion': '75',
  Connection: 'keep-alive',
  Cookie: 'memclid=0abfdde3-fdf8-4e6e-acc5-dae57e09941d; clSharedContext=7461c7cc-5a56-4e5f-b733-6febb8acd74e; lhpuuidh-browse-JGKS7R3LLZAC5M5AEZ5UK2FYIQ=US%3AEN-US%3A5f656cb6-ec81-4ffe-84b1-63a759e1f49b_ROOT; lhpuuidh-browse-JGKS7R3LLZAC5M5AEZ5UK2FYIQ-T=1562281011685; lhpuuidh-browse-vvvvvrrerr=US%3AEN-US%3Abdfaa1e1-6464-4f31-bd4e-1c3e1c1d8a39_ROOT; lhpuuidh-browse-SN75QUHUXBHIAR23$TOJ3MZFVNQ7VYM-T=1562281110358; flwssn=8acee0b3-44c5-47ca-83ca-d6df6812aae6; profilesNewSession=0; NetflixId=v%3D2%26c$t3DBQAOAAEBEG4pPrNrBZszdxk8h2J8z1-BwG9mHUGvDRv7ORSv67vAlP-SdTbWM7Nx0lORLEed8a5yNR37Ws-WNM9SGe27SaTdJVqavU0oXha4WaZ0BWfDqu_6jQVvSXK0448K3QbpZ_QdubFfWu0h0SFXFxvXYR5cS-ks0bg7SF4V8iLC15QA-Lr7f354xZWDdAWV1xEYPVT06ptRRqi7g1cLE778U9WP9LCJYARWmuFPlxGVe4cmwxhQRGShu5IN6ucYcSe4OEJL-Ew1Yxd5mk4_0fhzkf05QAnirTzm5BpP7h07p06D3ZOdOzGsBlI-fV51g9eXvlA1kTL7irOJ6nq6NaXz1L397kEjcEvpgcCS5pslq3a9qEQ60KOathphl5GLZGxn4xvXIcx5Hm8cfs4iVng1kn9elzavpq9AbE8ce9pbbS82IF16MlOcVwICJXB9z_TNZ9ejkmMtACl8mKmJoXBZIRYZJXCbE0wcj-R4WQKZDqQJvWsPb_3a0PQBGoZojZ8pbdM3LUf21uxPBbFa8xmikLTMUM6FMbrMhpNqJ9tiQ5X2eAqtaeRHb3f7Dooz-E04hw9Or5_UaeX9264Rc6xtHpjDDfgg57LCza3BohNv3ag14Es.%26bt%3Ddbl%26ch%3DAQEAEAABABTq8jfw7-uqTNfPp2rJYz9aGgfupIDvmNU.%26mac%3DAQEAEAABABTp8m22vbAq4UFdbkSZ8fwNXxu5lA2rUaQ.; SecureNetflixId=v%3D2%26mac%3DAQEAEQABABRFqE_Sb9qJah1InM9FBWZTOIDUlQqiX8s.%26dt%3D1562307985579; nfvdid=BQFmAAEBEBhpAs5prG2e%2FuSxGlzoowlgHvZPo5LP%2F2%2BADgwBZrcGgdZwsfNb0vdVGKri8rGJwZ8gD9CRQs66NlMtqB3G%2FZYyTtnkl9qZoWp9AUfIhhmJPVbVTcsWX9j3ohgTuunD58WRtFBLFwu4HRlh2f70lszp; playerPerfMetrics=%7B%22uiValue%22%3A%7B%22throughput%22%3A59173%7D%2C%22mostRecentValue%22%3A%7B%22throughput%22%3A59173%7D%7D; cL=1562307988270%7C156230796458086017%7C156230796487562712%7C%7C8%7CTR7OX5P3Z5DY3DVRBZH7CZQVDI,memclid=0abfdde3-fdf8-4e6e-acc5-dae57e09941d; clSharedContext=7461c7cc-5a56-4e5f-b733-6febb8acd74e; lhpuuidh-browse-JGKS7R3LLZAC5M5AEZ5UK2FYIQ=US%3AEN-US%3A5f656cb6-ec81-4ffe-84b1-63a759e1f49b_ROOT; lhpuuidh-browse-JGKS7R3LLZAC5M5AEZ5UK2FYIQ-T=1562281011685; lhpuuidh-browse-SN75QUHUXBHITOJ3MZFVNQ7VYM=US%3AEN-US%3Abdfaa1e1-6464-4f31-bd4e-1c3e1c1d8a39_ROOT; lhpuuidh-browse-SN75QUHUXBHITOJ3MZFVNQ7VYM-T=1562281110358; flwssn=8acee0b3-44c5-47ca-83ca-d6df6812aae6; profilesNewSession=0; NetflixId=v%3D2%26ct%3DBQAOAAEBEG4pPrNrBZszdxk8h2J8z1-BwG9mHUGvDRv7ORSv67vAlP-SdTbWM7Nx0lORLEed8a5yNR37Ws-WNM9SGe27SaTdJVqavU0oXha4WaZ0BWfDqu_6jQVvSXK0448K3QbpZ_QdubFfWu0h0SFXFxvXYR5cS-ks0bg7SF4V8iLC15QA-Lr7f354xZWDdAWV1xEYPVT06ptRRqi7g1cLE778U9WP9LCJYARWmuFPlxGVe4cmwxhQRGShu5IN6ucYcSe4OEJL-Ew1Yxd5mk4_0fhzkf05QAnirTzm5BpP7h07p06D3ZOdOzGsBlI-fV51g9eXvlA1kTL7irOJ6nq6NaXz1L397kEjcEvpgcCS5pslq3a9qEQ60KOathphl5GLZGxn4xvXIcx5Hm8cfs4iVng1kn9elzavpq9AbE8ce9pbbS82IF16MlOcVwICJXB9z_TNZ9ejkmMtACl8mKmJoXBZIRYZJXCbE0wcj-R4WQKZDqQJvWsPb_3a0PQBGoZojZ8pbdM3LUf21uxPBbFa8xmikLTMUM6FMbrMhpNqJ9tiQ5X2eAqtaeRHb3f7Dooz-E04hw9Or5_UaeX9264Rc6xtHpjDDfgg57LCza3BohNv3ag14Es.%26bt%3Ddbl%26ch%3DAQEAEAABABTq8jfw7-uqTNfPp2rJYz9aGgfupIDvmNU.%26mac%3DAQEAEAABABTp8m22vbAq4UFdbkSZ8fwNXxu5lA2rUaQ.; SecureNetflixId=v%3D2%26mac%3DAQEAEQABABRFqE_Sb9qJah1InM9FBWZTOIDUlQqiX8s.%26dt%3D1562307985579; nfvdid=BQFmAAEBEBhpAs5prG2e%2FuSxGlzoowlgHvZPo5LP%2F2%2BADgwBZrcGgdZwsfNb0vdVGKri8rGJwZ8gD9CRQs66NlMtqB3G%2FZYyTtnkl9qZoWp9AUfIhhmJPVbVTcsWX9j3ohgTuunD58WRtFBLFwu4HRlh2f70lszp; playerPerfMetrics=%7B%22uiValue%22%3A%7B%22throughput%22%3A59173%7D%2C%22mostRecentValue%22%3A%7B%22throughput%22%3A59173%7D%7D; cL=1562307988270%7C156230796458086017%7C156230796487562712%7C%7C8%7CTR7OX5P3Z5DY3DVRBZH7CZQVDI; memclid=0abfdde3-fdf8-4e6e-acc5-dae57e09941d; SecureNetflixId=v%3D2%26mac%3DAQEAEQABABSBtymZf_WUUxqlLjxi9Tcz1N9HfVu27lk.%26dt%3D1562373989602; NetflixId=ct%3DBQAOAAEBENa9KbSSXAiVkZ-nyrCx-eqB4E5bZ_0MPQueZB7vgCnv5dv90cB7Lw9mzIa4SiUj09G9TjdSTfh56B6WIBR0QhsgE99T2rPoDs0iKPhegsCl20lLNc8LFYmhH1duOYA09lPXxaW7fjFea3v7KdbVhEkoCQKMJ5XM4G6vuMmMMUWGnqftt8Fa7xGmgxsrZBYxLhyqA_EC0YKIIlXeNC2kzcc7igTTU1LPIgQmvq-eOkskaCnkfX995ZzIj1yrcXa6xEIprO7E2buzF0nnDcqiiLwDwWNOF_DNCiyHxT9SbBTeaacoAHVI4iXnZ3HY4GVHJuq7gJEtGR8fwraPVyCIc5jeiFu1FXdKogro5w22TrQNNQU-eDBEBoLImmk1pZqBwbSYVrsk86JkqGtWmuxFGyyBTmTSyrfhcETUDOSPvveWCaiBA617rqOTP7n8UbfBnWDCoDS1FCweAGM1K_7JVOY3f7Bo6CVUvLODKutGsuXar9GiOmPoCJMiCO-MCnda3BS-oqROhm5nOEL5rCWRlxlIgn8vrQB5ELWADX3qwwSEi7yTZ-hHaQSI5xIkqFcgeH0LT27fpxdrz01jlZ2o1glDQhBKoO34WTmllvCDQzqcBL7_nNaE4Y9I30N00O18pBXIgHYloRDnOUUxV66_9AxBiw..%26bt%3Ddbl%26ch%3DAQEAEAABABTq8jfw7-uqTNfPp2rJYz9aGgfupIDvmNU.%26v%3D2%26mac%3DAQEAEAABABQmYnZZPVCzzqbysYph9oT_ddbBqaBhqLM.',
  'X-Netflix.osName': 'Windows',
  'x-netflix.request.client.user.guid': 'JGKS7R3LLZAC5M5AEZ5UK2FYIQ',
  'X-Netflix.clientType': 'akira',
  'Accept-Language': 'en-US,en;q=0.9,es;q=0.8',
  'Accept-Encoding': 'gzip, deflate, br',
  DNT: '1',
  'X-Netflix.osFullName': 'Windows 10',
  Origin: 'https://www.netflix.com'
};

// QUERY PARAMS
const queryParams = {
  drmSystem: 'widevine',
  isWatchlistEnabled: 'false',
  isVolatileBillboardsEnabled: 'true',
  falcor_server: '0.1.0',
  withSize: 'true',
  materialize: 'true',
};

// REQ BODY
const reqBody = {
  path:
    ['["mylist",["id","length","name","requestId","trackIds"]]',
      '["mylist",{"from":0,"to":400},["availability","availabilityEndDateNear","delivery","interactiveBookmark","maturity","numSeasonsLabel","queue","releaseYear","runtime","seasonCount","summary","title","userRating","userRatingRequestId"]]',
      '["mylist",{"from":0,"to":400},"current",["hasAudioDescription","summary"]]',
      '["mylist",{"from":0,"to":400},"boxarts","_233x131","webp"]'],
  authURL: '1562307985945.HbhvPp8+bh2fI7XfVLhH3Dj6zJc='
}

// OPTIONS
const options = {
  method: 'POST',
  url: reqUrl,
  headers: reqHeaders,
  qs: queryParams,
  body: qs.stringify(reqBody),
  json: true,
};

request(options, (error, response, resBody) => {
  if (error) {
    throw error;
  } else if (response.statusCode !== 200) {
    throw resBody;
  }
  return resBody;
});

I figured out the problem. 我解决了这个问题。 The api was expecting the data to be in the body query string stringified. api期望数据在字符串化的正文查询字符串中。

To do this remove the form variable from the request. 为此,请从请求中删除表单变量。 Then stringify the value of the form variable and send that as they body 然后将表单变量的值字符串化并将其作为主体发送

Working code: 工作代码:

var request = require('request');
var qs = require('querystring')
var dataString = qs.stringify({
    path:
        ['["mylist",["id","length","name","requestId","trackIds"]]',
            '["mylist",{"from":0,"to":400},["availability","availabilityEndDateNear","delivery","interactiveBookmark","maturity","numSeasonsLabel","queue","releaseYear","runtime","seasonCount","summary","title","userRating","userRatingRequestId"]]',
            '["mylist",{"from":0,"to":400},"current",["hasAudioDescription","summary"]]',
            '["mylist",{"from":0,"to":400},"boxarts","_233x131","webp"]'],

})

var headers = {
    'Accept': '*/*',
    'Accept-Language': 'en-US,en;q=0.9,es;q=0.8',
    'Connection': 'keep-alive',
    'Content-Type': 'application/x-www-form-urlencoded',
    'DNT': '1',
    'Origin': 'https://www.netflix.com',
    'Postman-Token': '9aceb650-3446-4d39-8234-b503138fd065',
    'Referer': 'https://www.netflix.com/browse/my-list',
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36',
    'X-Netflix.browserName': 'Chrome',
    'X-Netflix.browserVersion': '75',
    'X-Netflix.clientType': 'akira',
    'X-Netflix.esnPrefix': 'NFCDCH-02-',
    'X-Netflix.osFullName': 'Windows 10',
    'X-Netflix.osName': 'Windows',
    'X-Netflix.osVersion': '10.0',
    'X-Netflix.playerThroughput': '58194',
    'X-Netflix.uiVersion': 'v73fa49e3',
    'cache-control': 'no-cache',
    'Cookie': 'Cookie23werwetertert';

//var dataString = 'path=%5B%22mylist%22%2C%5B%22id%22%2C%22length%22%2C%22name%22%2C%22requestId%22%2C%22trackIds%22%5D%5D&path=%5B%22mylist%22%2C%7B%22from%22%3A0%2C%22to%22%3A400%7D%2C%5B%22availability%22%2C%22availabilityEndDateNear%22%2C%22delivery%22%2C%22interactiveBookmark%22%2C%22maturity%22%2C%22numSeasonsLabel%22%2C%22queue%22%2C%22releaseYear%22%2C%22runtime%22%2C%22seasonCount%22%2C%22summary%22%2C%22title%22%2C%22userRating%22%2C%22userRatingRequestId%22%5D%5D&path=%5B%22mylist%22%2C%7B%22from%22%3A0%2C%22to%22%3A400%7D%2C%22current%22%2C%5B%22hasAudioDescription%22%2C%22summary%22%5D%5D&path=%5B%22mylist%22%2C%7B%22from%22%3A0%2C%22to%22%3A400%7D%2C%22boxarts%22%2C%22_233x131%22%2C%22webp%22%5D&authURL=.%%3D';

var options = {
    json: true,
    url: 'https://www.netflix.com/api/shakti/v73fa49e3/pathEvaluator?drmSystem=widevine&isWatchlistEnabled=false&isVolatileBillboardsEnabled=true&falcor_server=0.1.0&withSize=true&materialize=true',
    method: 'POST',
    headers: headers,
    body: dataString
};

function callback(error, response, body) {
    if (!error && response.statusCode == 200) {
        console.log(body);
    }
}

request(options, callback);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM