main.js 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. const express = require('express')
  2. const httpProxy = require('../lib/http-proxy')
  3. const request = require('request')
  4. const app = express()
  5. const assetsProxy = httpProxy.createProxyServer({
  6. target: 'https://www.heroforge.com',
  7. xfwd: false,
  8. secure: false,
  9. changeOrigin: true,
  10. autoRewrite: true,
  11. protocolRewrite: 'http',
  12. selfHandleResponse: false,
  13. mapHeaders(headers) {
  14. if (headers.referer) {
  15. const url = new URL(headers.referer)
  16. url.hostname = 'www.heroforge.com'
  17. url.protocol = 'https'
  18. url.port = 443
  19. headers.referer = url.toString()
  20. }
  21. return headers
  22. }
  23. })
  24. app.use(/^\/$/, (req, res) => {
  25. request('https://www.heroforge.com', (err, response, body) => {
  26. if (err) res.status(500).send(err)
  27. else {
  28. let html = body
  29. .replace(/<script[^>]+googletagmanager.*<\/script>/g, '<!-- google tag manager -->')
  30. .replace(/<img[^>]+facebook.*>/g, '<!-- facebook -->')
  31. .replace('https://connect.facebook.net/en_US/fbevents.js', '')
  32. .replace('</body>', '<script type="text/javascript" src="/custom/main.js"></script></body>')
  33. res.status(200)
  34. .set('Content-Type', 'text/html')
  35. .send(html)
  36. }
  37. })
  38. })
  39. app.use('/custom/', express.static('./dist'))
  40. app.use('/', (req, res) => {
  41. assetsProxy.web(req, res)
  42. })
  43. app.listen(process.env.PORT || 9011)