【问题标题】:Why does cURL return correct value but not node-libcurl?为什么 cURL 返回正确的值而不是 node-libcurl?
【发布时间】:2021-03-11 22:56:19
【问题描述】:

我正在使用 cURL 来获取一个网站(返回我想要的错误)。

$ curl 'https://matchmaker.krunker.io/seek-game?hostname=krunker.io&region=us-ca-sv&game=SV%3A4jve9&autoChangeGame=false&validationToken=QR6beUGVKUKkzwIsKhbKXyaJaZtKmPN8Rwgykea5l5FkES04b6h1RHuBkaUMFnu%2B&dataQuery=%7B%7D

但是,当我在 Node.JS 中使用 node-libcurl 包时,我收到错误 1020。为什么会出现这种情况?

const { curly } = require('node-libcurl')
const url = 'https://matchmaker.krunker.io/seek-game?hostname=krunker.io&region=us-ca-sv&game=SV%3A4jve9&autoChangeGame=false&validationToken=QR6beUGVKUKkzwIsKhbKXyaJaZtKmPN8Rwgykea5l5FkES04b6h1RHuBkaUMFnu%2B&dataQuery=%7B%7D'

curly.get(url)
    .then(({ statusCode, data }) => console.log(statusCode, data))

【问题讨论】:

    标签: node.js curl get


    【解决方案1】:

    1020 不是 curl 错误代码,快速谷歌搜索表明 1020 是 Cloudflare 的常见防火墙错误,参考 https://community.cloudflare.com/t/error-1020-cannot-log-in-to-the-site-how-to-fix/71784

    对于服务器来说,LIBcurl 请求和 curl 请求之间最明显的区别是 libcurl 没有用户代理,但 curl 有,并且阻止缺少用户代理的请求并不少见(维基百科。 org 是 1 个阻止缺少用户代理的请求的示例),请添加用户代理并重试。

    curly.get(url,{userAgent:"imaginate's awesome curl script"})
        .then(({ statusCode, data }) => console.log(statusCode, data))
    

    【讨论】:

    • 我仍然得到错误。请注意,如果您使用浏览器加载 URL,它会加载。也许设置其他参数有帮助?另外,this error 表示我被拒绝了。如果您发现任何其他可能有帮助的参数,请告诉我。
    • @imaginate hmm 可能是一个 ip 块,如果您的 node-js 应用程序和您的 curl 请求有 2 个不同的 ip,但是将 --trace-ascii - 添加到您的 curl 命令中,您会得到什么?
    • 这绝对不是ip块,因为我使用了代理,结果相同,错误1020。
    猜你喜欢
    • 2018-09-02
    • 2013-03-08
    • 2014-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-11
    • 2022-12-16
    • 1970-01-01
    相关资源
    最近更新 更多