来自python的请求从nodejs得到不同的响应

Posted

技术标签:

【中文标题】来自python的请求从nodejs得到不同的响应【英文标题】:request from python get different response from nodejs 【发布时间】:2020-06-11 22:01:26 【问题描述】:

我正在尝试从 nodejs 发出相同的请求。 python代码是

import requests
 r = requests.post(url,
                              data=data,
                              headers=
                                  'User-Agent': self.ua,
                                  'Content-Type': 'application/x-www-form-urlencoded'
                              
                              )

在节点中,我尝试了 node-fetch 和 Axios 和请求,但没有得到相同的响应,我还尝试了来自 bash 的 CURL,但得到了相同的节点响应,我尝试打印 python 标头 print(r.request.headers)并将其复制粘贴到节点中但得到不同的响应

Axios.post(url, 
      data,
      headers: 
        "User-Agent":
          "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (Khtml, like Gecko) Chrome/76.0.3809.100 Safari/537.36",
        "Content-Type": "application/x-www-form-urlencoded",



    )
      .then(text => console.log(text.data))
      .catch(err => 
        console.log(err);
      );

我在 python 中得到了不同的结果,我得到了我期望的结果,但在节点中我得到了 html 响应

 Sorry, could not complete request because: <div class="tk-intro" style="font-size: 14px;color:#ff090f;">application information was not supplied.</div> 

但在 python 中工作正常

【问题讨论】:

这需要更多的解释。也许您将不得不编辑代码并提供更多代码/上下文 我传递了相同的数据、相同的 url 和相同的标题,但它在 python 上完美运行,在节点和邮递员中失败 @AbanoubIstfanous,尝试代理每个请求并逐行比较两个请求。 @AbanoubIstfanous 我认为这些信息还不够。 fails 是什么意思?无论如何,我们没有输出或minimal reproducible example,我不确定我们能实际做多少。 请不要将这种信息作为评论分享,这很难阅读。改为编辑您的帖子。 【参考方案1】:

我尝试打印请求标头和 url 和数据,发现我应该将数据转换为这样的查询字符串

"appleId=email@gmail.com&accountPassword=xxxxxx"

而不是将其作为 JSON 传递


"appleID": "email@gmail.com",
"accountPassword": "xxxx"

【讨论】:

以上是关于来自python的请求从nodejs得到不同的响应的主要内容,如果未能解决你的问题,请参考以下文章

当我直接从 MySQL 获取时,NodeJS 响应 MySQL 时区不同

Nodejs telnet 实时响应获取

NodeJS 通过请求函数加入承诺

如何使用nodejs和request将不同请求的响应放在同一个文档中?

如何停止主 ui 线程,直到我得到来自 http 请求的响应

POST请求并按顺序获取响应(NodeJS,python客户端)