首页 > 解决方案 > 使用 JavaScript 爬取网站 -> 可能以及爬取的网站上显示的 IP

问题描述

可以在 Angular-App 中抓取网站吗?我说的是从 Angular 调用网站,而不是爬取 Angular-App。如果是这样,那么我想知道在抓取的网站上将显示哪个 IP。由于 JavaScript 是客户端,我建议它是客户端的 IP,而不是服务器的 IP(可能在 nodejs 上)。但我所知道的,它主要是浏览器实现的东西,我们可以在 JS 中使用,所以甚至可以使用 JavaScript(或 Angular)的方法来爬取网站?

最好的问候嗡嗡声

标签: javascriptangularweb-crawler

解决方案


理论上,您可以创建一个 AJAX 请求来获取具有响应类型的数据text/html。这会将远程文档作为字符串提供给您。不过,浏览器不会尝试在该文档中加载 JavaScript 和 CSS。这可能不是问题,但 CORS 是。出于安全原因,大多数浏览器会阻止您从其他地方加载数据(否则,犯罪分子很容易将 JavaScript 放入任何网页)。有关详细信息,请参见此处:https ://developer.mozilla.org/en-US/docs/Web/HTTP/CORS

如果您可以控制第二个域,则可以将那里的服务器配置为将Access-Control-Allow-Origin标头发送到浏览器以允许从 Angular 应用程序进行访问。

注意:您可以使用 aniframe来加载其他网站,但是当当前文档的域与 中的域iframe不匹配时,您将无法iframe从 JavaScript 访问内容。

解决此问题的一种方法是在您的服务器上安装代理。然后浏览器可以向您的服务器询问有问题的页面。在这种情况下,远程网站将获取您服务器的 IP。


推荐阅读