3 Commits

Author SHA1 Message Date
Gianni Carafa
3e3eebcdc2 make user-agent and x-forwaded-for configurable, rename debug path to raw 2023-11-02 19:35:10 +01:00
Gianni Carafa
45a3fe2adf rename debug path to raw 2023-11-02 19:19:13 +01:00
Gianni Carafa
ec7f2089fc Rename the binary from "kubero" to "ladder" in the .goreleaser.yaml file. 2023-11-02 19:17:03 +01:00
8 changed files with 28 additions and 12 deletions

View File

@@ -7,7 +7,7 @@ before:
builds:
-
main: cmd/main.go
binary: kubero
binary: ladder
env:
- CGO_ENABLED=0
goos:

View File

@@ -71,3 +71,5 @@ http://localhost:8080/debug/https://www.google.com
| --- | --- | --- |
| `PORT` | Port to listen on | `8080` |
| `PREFORK` | Spawn multiple server instances | `false` |
| `USER_AGENT` | User agent to emulate | `Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)` |
| `X_FORWARDED_FOR` | IP Forwarder address | `66.249.66.1` |

View File

@@ -19,7 +19,7 @@ func main() {
)
app.Get("/", handlers.Form)
app.Get("debug/*", handlers.Debug)
app.Get("raw/*", handlers.Raw)
app.Get("api/*", handlers.Api)
app.Get("/*", handlers.ProxySite)

View File

@@ -10,6 +10,8 @@ services:
environment:
- PORT=8080
- PREFORK=true
- X_FORWARDED_FOR=66.249.66.1
- USER_AGENT=Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)
#- GODEBUG=netdns=go+4
ports:
- "8080:8080"

View File

@@ -23,8 +23,8 @@ func Api(c *fiber.Ctx) error {
// Fetch the site
client := &http.Client{}
req, _ := http.NewRequest("GET", u.String(), nil)
req.Header.Set("User-Agent", "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)")
req.Header.Set("X-Forwarded-For", "66.249.66.1")
req.Header.Set("User-Agent", UserAgent)
req.Header.Set("X-Forwarded-For", ForwardedFor)
req.Header.Set("Referer", u.String())
req.Header.Set("Host", u.Host)
resp, err := client.Do(req)

View File

@@ -6,12 +6,16 @@ import (
"log"
"net/http"
"net/url"
"os"
"regexp"
"strings"
"github.com/gofiber/fiber/v2"
)
var UserAgent = getenv("USER_AGENT", "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)")
var ForwardedFor = getenv("X_FORWARDED_FOR", "66.249.66.1")
func ProxySite(c *fiber.Ctx) error {
// Get the url from the URL
urlQuery := c.Params("*")
@@ -28,8 +32,8 @@ func ProxySite(c *fiber.Ctx) error {
// Fetch the site
client := &http.Client{}
req, _ := http.NewRequest("GET", u.String(), nil)
req.Header.Set("User-Agent", "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)")
req.Header.Set("X-Forwarded-For", "66.249.66.1")
req.Header.Set("User-Agent", UserAgent)
req.Header.Set("X-Forwarded-For", ForwardedFor)
req.Header.Set("Referer", u.String())
req.Header.Set("Host", u.Host)
resp, err := client.Do(req)
@@ -73,3 +77,11 @@ func rewriteHtml(bodyB []byte, u *url.URL) string {
return body
}
func getenv(key, fallback string) string {
value := os.Getenv(key)
if len(value) == 0 {
return fallback
}
return value
}

View File

@@ -9,7 +9,7 @@ import (
"github.com/gofiber/fiber/v2"
)
func Debug(c *fiber.Ctx) error {
func Raw(c *fiber.Ctx) error {
// Get the url from the URL
urlQuery := c.Params("*")
@@ -23,8 +23,8 @@ func Debug(c *fiber.Ctx) error {
// Fetch the site
client := &http.Client{}
req, _ := http.NewRequest("GET", u.String(), nil)
req.Header.Set("User-Agent", "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)")
req.Header.Set("X-Forwarded-For", "66.249.66.1")
req.Header.Set("User-Agent", UserAgent)
req.Header.Set("X-Forwarded-For", ForwardedFor)
req.Header.Set("Referer", u.String())
req.Header.Set("Host", u.Host)
resp, err := client.Do(req)

View File

@@ -11,9 +11,9 @@ import (
"github.com/gofiber/fiber/v2"
)
func TestDebug(t *testing.T) {
func TestRaw(t *testing.T) {
app := fiber.New()
app.Get("/debug/*", Debug)
app.Get("/raw/*", Raw)
testCases := []struct {
name string
@@ -34,7 +34,7 @@ func TestDebug(t *testing.T) {
for _, tc := range testCases {
t.Run(tc.name, func(t *testing.T) {
req := httptest.NewRequest(http.MethodGet, "/debug/"+tc.url, nil)
req := httptest.NewRequest(http.MethodGet, "/raw/"+tc.url, nil)
resp, err := app.Test(req)
if err != nil {
t.Fatalf("unexpected error: %v", err)