在获取请求中提供授权时,在需要授权的nodeJS中抓取网站?
Posted
技术标签:
【中文标题】在获取请求中提供授权时,在需要授权的nodeJS中抓取网站?【英文标题】:Scrape a website in nodeJS which requires authorization, when authorization is provided in a get request? 【发布时间】:2019-04-26 16:32:42 【问题描述】:我在 nodejs 中抓取一个网站以从中获取信息(使用 http 解析)。 该网站需要基本的身份验证用户名和密码才能登录。 我必须编写一个 API 来对该网站进行网络抓取。我将在邮递员中提供基本的身份验证 - 用户名和密码,并将仅从邮递员触发我的 API。
我不想在我的代码中硬编码用户名和密码。我将仅从邮递员请求中获取凭据。
那么在编写 API 时如何解决这个问题? 我将如何使用邮递员中提供的用户名和密码?
【问题讨论】:
您确定这是基本身份验证吗?如果是这样,我可以在 url 中传递它 【参考方案1】:使用 NodeJS,您可以将用户 ID 和密码作为标题传递:
var request = require('request'),
username = "john",
password = "1234",
url = "http://www.example.com",
auth = "Basic " + new Buffer(username + ":" + password).toString("base64");
request(
url : url,
headers :
"Authorization" : auth
,
function (error, response, body)
// Do scraping here
);
如果抓取很复杂或有交互式登录屏幕,我会考虑 puppeteer,这是处理这类东西的一个很好的框架。
【讨论】:
我不想在我的 ocde 中硬编码用户名和密码,我将只获得用户名和密码表单 API 请求/邮递员。那么在这种情况下我将如何向网站提出请求? 您在邮递员中执行的任何操作也可以在代码中执行,因此您将调用为您提供 ID 和密码的服务,然后将其提供给第二个请求。如果您有 github 存储库,我可以提供更具体的建议。但请注意不要暴露您的 ID 和密码! 转到这个 URL - 159.89.165.152 你会看到一个弹出窗口出现在你输入用户名和密码的地方。我想废弃这个网站。在邮递员中,我将在基本身份验证下提供用户名和密码。我应该如何编写我的 API,以便在我在 nodejs 应用程序中编写的 API 中使用邮递员中提供的用户名和密码?谢谢。 @Daviid 请帮忙。 复制并粘贴您放入邮递员的内容(您的 ID/密码除外),我会帮忙以上是关于在获取请求中提供授权时,在需要授权的nodeJS中抓取网站?的主要内容,如果未能解决你的问题,请参考以下文章
使用 keycloak-nodejs-connect 时出错 - “无法在仅承载模式下交换代码以获取授权”