2017-07-18 87 views
0

我正在尝试使用javascript创建个人网页代理,以便用户可以通过网站浏览互联网。示例http://webproxy.to/使用节点js和快速创建网页代理

我想通过使用管道请求将响应从url发回给用户,但它不会加载图像,因为html正在使用相对url。如何更改链接,以便使用该网页的绝对网址?

app.get('/:url', function (req, res) { 
    var url = req.params.url; 
    request('https://www.google.com', function (error, response, html) { 
    if (!error && response.statusCode == 200) { 
     req.pipe(request('https://www.google.com')).pipe(res); 
    } 
    }); 
}); 
+0

您可以尝试使用快递-HTTP代理https://github.com/villadora/express-http-proxy –

+0

解析HTML,搜索图像标记,获得网址并更换。将html字符串化并发送给用户。 – Adriani6

回答

0

我认为管道在这种情况下是不可用的,您必须进行修改。 尝试使用这样的:

const jsdom = require("jsdom"); 
const { JSDOM } = jsdom; 

app.get('/:url', function (req, res) { 
    var url = req.params.url; 
    request(url, function (error, response, html) {  
    if (!error && response.statusCode == 200) { 
     const dom = new JSDOM(html); 
     const links = dom.window.document.querySelector('a'); 
     for(let i = 0; i < links.length; i++) { 
     if (!/http/.test(links[i].href) && !/mailto/.test(links[i].href)) { 
      links[i].href = `http://${url}${links[i].href}`; 
     } 
     } 
     res.send(dom.serialize()); 
    } 
    }); 
});