【问题标题】:How to programmatically replicate a request found in Chrome Developer Tools?如何以编程方式复制 Chrome 开发人员工具中的请求?
【发布时间】:2017-02-08 14:24:44
【问题描述】:

我正在查看我在 Venmo.com 上的余额,但它们一次只显示 3 个月,我想获取我的整个交易历史记录。

查看 Chrome 开发者工具,在网络选项卡下,我可以看到对 https://api.venmo.com/v1/transaction-history?start_date=2017-01-01&end_date=2017-01-31 的请求返回 JSON。

我想以编程方式遍历时间并发出多个请求并聚合所有事务。但是,我不断收到 401 Unauthorized。

我最初的方法只是使用 Node.js。我查看了请求中的cookie并将其复制到secret.txt文件中然后发送请求:

import fetch from 'node-fetch'
import fs from 'fs-promise'

async function main() {
  try {
    const cookie = await fs.readFile('secret.txt')  
    const options = {
      headers: {
        'Cookie': cookie,
      }, 
    }
    try {
      const response = await fetch('https://api.venmo.com/v1/transaction-history?start_date=2016-11-08&end_date=2017-02-08', options)
      console.log(response)
    } catch(e) {
      console.error(e)
    }
  } catch(e) {
    console.error('please put your cookie in a file called `secret.txt`')
    return
  }
}

那没用,我尝试将所有标题复制过来:

const cookie = await fs.readFile('secret.txt')  
const options = {
  headers: {
    'Accept-Encoding': 'gzip, deflate, sdch, br',
    'Accept-Language': 'en-US,en;q=0.8',
    'Cache-Control': 'no-cache',
    'Connection': 'keep-alive',
    'Cookie': cookie,
    'Host': 'api.venmo.com',
    'Origin': 'https://venmo.com',
    'Pragma': 'no-cache',
    'Referer': 'https://venmo.com/account/settings/balance/statement?end=02-08-2017&start=11-08-2016',
    'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.95 Safari/537.36',
  }, 
}
try {
  const response = await fetch('https://api.venmo.com/v1/transaction-history?start_date=2016-11-08&end_date=2017-02-08', options)
  console.log(response)
} catch(e) {
  console.error(e)
}

这也不起作用。

我什至尝试从网站的控制台发出请求并得到 401:

fetch('https://api.venmo.com/v1/transaction-history?start_date=2016-11-08&end_date=2017-02-08', {credentials: 'same-origin'}).then(console.log)

所以我的问题是:我在 Chrome 开发者工具中看到一个网络请求。如何以编程方式发出相同的请求?最好使用 Node.js 或 Python,这样我就可以编写自动化脚本。

【问题讨论】:

    标签: javascript python http firefox-developer-tools google-developer-tools


    【解决方案1】:

    在 Chrome 开发者工具的网络选项卡中,右键单击请求并单击“复制”>“复制为 cURL (bash)”。然后,您可以直接使用 curl 命令编写脚本,或使用https://curlconverter.com/ 将 cURL 命令转换为 Python、JavaScript、PHP、R、Go、Rust、Elixir、Java、MATLAB、Dart 或 JSON。

    【讨论】:

    • 哦。我的。上帝。我本来希望得到的最佳答案:)
    • 所以...您建议 OP 将其 cookie 的秘密值复制到某个第三方网站?
    • 对我不起作用,但放弃了分享副本作为 Inspect 的技巧。太棒了!
    • 是否值得在复制到 trillworks 之前添加注释以更改任何密码,然后在返回的脚本中将其更改回?
    • 这不是众所周知的事情,就是我在谷歌搜索方面真的很糟糕。我花了很长时间才得到这个答案,它基本上解决了我所有的报废问题。
    猜你喜欢
    • 2015-12-04
    • 2013-05-15
    • 1970-01-01
    • 2015-08-27
    • 1970-01-01
    • 2014-04-21
    • 1970-01-01
    • 2016-04-20
    • 2012-09-08
    相关资源
    最近更新 更多