Node.js:代理站点如何处理相对 URL?

标签 node.js proxy screen-scraping relative-path

我在 Node 中创建了一个相对简单的代理,它允许我下载页面并显示它们。这很好,尽管一些脚本链接表单图像似乎已损坏,因为它们指向相关文件。作为一个项目,我正在尝试创建一个功能齐全的 Web 代理。

Proxify 等网站如何解决这个问题吗?

引用方案:

var app = require('express').createServer();
var request = require('request'),
sys = require('sys'),
fs=require('fs');

app.get('/url', function(req, res){
  console.log(req.query.link);

  request({ uri: req.query.link,
            headers: {"User-Agent": "Mozilla/5.0 (Windows  NT 6.1; rv:6.0) Gecko/20110814 Firefox/6.0"}
          }, function (error, response, body) {

             if (error && response.statusCode !== 200) {    
               console.log('Error when contacting google.com')
             }

  res.send(body, {"Content-type": "text/html"});
  res.end(); 

  });
});

最佳答案

现在您的代码仅代理 html 文件,客户端直接从真实站点获取其余部分。您将需要使用类似 Node jQuery 的东西来替换文档中的所有 src/href 以使它们通过您的代理,同时您可以检查它们是否是相对的以及它们是否前置当前 url然后创建您的代理网址。

关于Node.js:代理站点如何处理相对 URL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7524871/

相关文章:

Python - Selenium 取消代理使用

javascript - 使用谷歌浏览器中的检查元素功能来抓取网站

node.js - 您如何使用 npm 请求模块让 Node 工作,目前在 Postman 中工作?

javascript - 如何在 JavaScript 中使顺序 if 语句异步?

http - HTTP 代理缓存如何决定服务身份编码资源还是 gzip 编码资源?

html - 我是 Perl 新手,有一些正则表达式问题

ruby - Mechanize 可以进行 Javascript 调用吗?

javascript - 如何从父文件夹调用 npm 脚本?

node.js - 如何构建一个 Slack 机器人来进行多个对话?

带有 Twisted 的 Python 代理