
12ft.io और 1ft.io का सेल्फ-होस्टेड विकल्प। CORS हेडर हटाने और HTML संशोधित करने के लिए प्रॉक्सी।
Ladder एक http वेब प्रॉक्सी है।
Ladder एक डेवलपर टूल है जिसका उपयोग आधुनिक वेबसाइटों पर paywall कार्यान्वयन और सामग्री वितरण व्यवहार का परीक्षण और विश्लेषण करने के लिए किया जाता है।
यह डेवलपर्स, शोधकर्ताओं और प्रकाशकों को विभिन्न क्लाइंट वातावरणों (जैसे ब्राउज़र और क्रॉलर) का अनुकरण करने और यह देखने की अनुमति देता है कि विभिन्न परिस्थितियों में सामग्री कैसे प्रदान की जाती है। यह paywall कॉन्फ़िगरेशन को डीबग करने, एक्सेस कंट्रोल और http हेडर को सत्यापित करने तथा विभिन्न यूज़र एजेंटों में सुसंगत व्यवहार सुनिश्चित करने में उपयोगी बनाता है।
Ladder केवल वैध परीक्षण, शोध और गुणवत्ता आश्वासन उद्देश्यों के लिए है। इसका उपयोग केवल लागू कानूनों और लक्षित वेबसाइट की सेवा शर्तों के अनुपालन में किया जाना चाहिए।

sequenceDiagram
client->>+ladder: GET
ladder-->>ladder: apply RequestModifications
ladder->>+website: GET
website->>-ladder: 200 OK
ladder-->>ladder: apply ResultModifications
ladder->>-client: 200 OK
कुछ वेबसाइटें उन तक पहुँचने वाले क्लाइंट के प्रकार के आधार पर अलग सामग्री (Cloaking) प्रदान करती हैं (उदाहरण के लिए, सर्च इंजन क्रॉलर बनाम मानक वेब ब्राउज़र)। Ladder को विभिन्न क्लाइंट प्रकारों का अनुकरण करने के लिए कॉन्फ़िगर किया जा सकता है ताकि परीक्षण, स्वचालन या शोध उद्देश्यों के लिए सार्वजनिक रूप से सुलभ सामग्री प्राप्त की जा सके।
हालाँकि, कई वेबसाइटें स्वचालित पहुँच को प्रतिबंधित करने के लिए उन्नत तंत्र लागू करती हैं, जैसे फ़िंगरप्रिंटिंग, रेट लिमिटिंग या व्यवहारिक विश्लेषण। Ladder ऐसी सुरक्षाओं को दरकिनार नहीं करता है और उन सेवाओं पर सही ढंग से कार्य नहीं कर सकता है जो सक्रिय रूप से पहुँच को प्रतिबंधित या नियंत्रित करती हैं।
FlareSolverr जैसे तृतीय-पक्ष टूल मौजूद हैं और इन्हें हेडलेस ब्राउज़र वातावरण में वेब पेज प्रस्तुत करने के लिए स्वतंत्र रूप से उपयोग किया जा सकता है। ये टूल Ladder का हिस्सा नहीं हैं, और उनका उपयोग कानूनी और संविदात्मक प्रतिबंधों के अधीन हो सकता है। उपयोगकर्ता यह सुनिश्चित करने के लिए पूरी तरह जिम्मेदार हैं कि उनका उपयोग सभी लागू नियमों का अनुपालन करता है।
चेतावनी: यदि आपका इंस्टेंस सार्वजनिक रूप से सुलभ होगा, तो Basic Auth सक्षम करना सुनिश्चित करें। यह अनधिकृत उपयोगकर्ताओं को आपके प्रॉक्सी का उपयोग करने से रोकेगा। यदि आप Basic Auth सक्षम नहीं करते हैं, तो कोई भी आपके प्रॉक्सी का उपयोग अश्लील/अवैध चीज़ें ब्राउज़ करने के लिए कर सकता है। और इसके लिए आपको जिम्मेदार ठहराया जाएगा।
./ladder -r https://raw.githubusercontent.com/everywall/ladder-rules/main/ruleset.yamldocker run -p 8080:8080 -d --env RULESET=https://raw.githubusercontent.com/everywall/ladder-rules/main/ruleset.yaml --name ladder ghcr.io/everywall/ladder:latest
curl https://raw.githubusercontent.com/everywall/ladder/main/docker-compose.yaml --output docker-compose.yaml
docker-compose up -d
अधिक जानकारी के लिए helm-chart उप-निर्देशिका में README.md देखें।
या प्रॉक्सी URL के अंत में URL जोड़कर सीधे: http://localhost:8080/https://www.example.com
या निम्न URL के साथ एक बुकमार्क बनाएँ:
javascript:window.location.href="http://localhost:8080/"+location.href
curl -X GET "http://localhost:8080/api/https://www.example.com"
http://localhost:8080/raw/https://www.example.com
ALLOWED_DOMAINS और ALLOWED_DOMAINS_RULESET को एक साथ जोड़ा जाता है। यदि दोनों खाली हैं, तो कोई सीमा लागू नहीं होती।
| BASE_PATH | प्रॉक्सी के लिए बेस पथ, उपयोगी यदि आप प्रॉक्सी को सबपाथ पर चलाना चाहते हैं (जैसे http://localhost:8080/proxy/) | `` |
प्रतिक्रिया या अनुरोधित URL को संशोधित करने के लिए कस्टम नियम लागू करना संभव है। इसका उपयोग पृष्ठ से अवांछित तत्वों को हटाने या संशोधित करने के लिए किया जा सकता है। Ruleset एक YAML फ़ाइल, YAML फ़ाइलों वाली निर्देशिका, या YAML फ़ाइल का URL है जिसमें प्रत्येक डोमेन के लिए नियमों की सूची होती है। ये नियम स्टार्टअप पर लोड होते हैं।
एक अलग रिपॉजिटरी ruleset.yaml में एक बुनियादी ruleset उपलब्ध है। बेझिझक अपने नियम जोड़ें और पुल रिक्वेस्ट बनाएँ।
- domain: example.com # Includes all subdomains
domains: # Additional domains to apply the rule
- www.example.de
- www.beispiel.de
headers:
x-forwarded-for: none # override X-Forwarded-For header or delete with none
referer: none # override Referer header or delete with none
user-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36
content-security-policy: script-src 'self'; # override response header
cookie: privacy=1
regexRules:
- match: <script\s+([^>]*\s+)?src="(/)([^"]*)"
replace: <script $1 script="/https://www.example.com/$3"
injections:
- position: head # Position where to inject the code
append: | # possible keys: append, prepend, replace
<script>
window.localStorage.clear();
console.log("test");
alert("Hello!");
</script>
- domain: www.anotherdomain.com # Domain where the rule applies
useFlareSolverr: false # Use FlareSolverr for Cloudflare bypass (optional, default: false)
paths: # Paths where the rule applies
- /article
googleCache: false # Use Google Cache to fetch the content
regexRules: # Regex rules to apply
- match: <script\s+([^>]*\s+)?src="(/)([^"]*)"
replace: <script $1 script="/https://www.example.com/$3"
injections:
- position: .left-content article .post-title # Position where to inject the code into DOM
replace: |
<h1>My Custom Title</h1>
- position: .left-content article # Position where to inject the code into DOM
prepend: |
<h2>Subtitle</h2>
- domain: demo.com
headers:
content-security-policy: script-src 'self';
user-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36
urlMods: # Modify the URL
query:
- key: amp # (this will append ?amp=1 to the URL)
value: 1
domain:
- match: www # regex to match part of domain
replace: amp # (this would modify the domain from www.demo.de to amp.demo.de)
path:
- match: ^ # regex to match part of path
replace: /amp/ # (modify the url from https://www.demo.com/article/ to https://www.demo.de/amp/article/)
Ladder अब Cloudflare सुरक्षा और अन्य एंटी-बॉट चुनौतियों को बायपास करने के लिए FlareSolverr के साथ एकीकरण का समर्थन करता है। यह उन साइटों के लिए विशेष रूप से उपयोगी है जो परिष्कृत बॉट डिटेक्शन तंत्र का उपयोग करती हैं।
Docker Compose का उपयोग करना (अनुशंसित):
# docker-compose.yaml
services:
ladder:
image: ghcr.io/everywall/ladder:latest
ports:
- "8080:8080"
environment:
- RULESET=https://raw.githubusercontent.com/everywall/ladder-rules/main/ruleset.yaml
# - FLARESOLVERR_HOST=http://flaresolverr:8191
depends_on:
- flaresolverr
flaresolverr:
image: ghcr.io/flaresolverr/flaresolverr:latest
ports:
- "8191:8191"
environment:
- LOG_LEVEL=info
FlareSolverr को अलग से चलाना:
docker run -d \
--name flaresolverr \
-p 8191:8191 \
ghcr.io/flaresolverr/flaresolverr:latest
फिर FlareSolverr URL के साथ Ladder शुरू करें:
FLARESOLVERR_HOST=http://localhost:8191 ./ladder
विशिष्ट डोमेन के लिए FlareSolverr का उपयोग करने के लिए, अपनी ruleset में useFlareSolverr: true फ़्लैग जोड़ें:
# Example ruleset with FlareSolverr
- domain: cloudflare-protected-site.com
useFlareSolverr: true # Enable FlareSolverr for this domain
headers:
user-agent: "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36"
accept: "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"
# Regular site without FlareSolverr
- domain: regular-site.com
headers:
user-agent: "Custom User Agent 1.0"
FlareSolverr एकीकरण विशेष रूप से निम्न के लिए उपयोगी है:
useFlareSolverr सक्षम करें जिन्हें वास्तव में इसकी आवश्यकता हैhttp://localhost:8080 पर एक डेवलपमेंट सर्वर चलाने के लिए:
echo "dev" > handlers/VERSION
RULESET="./ruleset.yaml" go run cmd/main.go
air को इंस्टॉलेशन निर्देशों के अनुसार इंस्टॉल करें।
http://localhost:8080 पर एक डेवलपमेंट सर्वर चलाएँ:
air # या air का पथ यदि आपने अपने .bashrc या .zshrc में पथ alias नहीं जोड़ा है
यह प्रोजेक्ट Tailwind CSS कक्षाओं के साथ एक स्टाइलशीट बनाने के लिए pnpm का उपयोग करता है। स्थानीय विकास के लिए, यदि आप form.html में शैलियों को संशोधित करते हैं, तो एक नई स्टाइलशीट उत्पन्न करने के लिए pnpm build चलाएँ।
| Variable | Description | Value |
|---|
PORT | सुनने के लिए पोर्ट | 8080 |
PREFORK | कई सर्वर इंस्टेंस स्पॉन करें | false |
USER_AGENT | अनुकरण करने के लिए यूज़र एजेंट | Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html) |
X_FORWARDED_FOR | IP फ़ॉरवर्डर पता | 66.249.66.1 |
USERPASS | Basic Auth सक्षम करता है, प्रारूप admin:123456 | `` |
LOG_URLS | प्राप्त URL लॉग करें | true |
DISABLE_FORM | URL फ़ॉर्म फ्रंटपेज अक्षम करें | false |
FORM_PATH | कस्टम फ़ॉर्म HTML का पथ | `` |
RULESET | ruleset फ़ाइल का पथ या URL, स्थानीय निर्देशिकाओं को स्वीकार करता है | https://raw.githubusercontent.com/everywall/ladder-rules/main/ruleset.yaml या /path/to/my/rules.yaml या /path/to/my/rules/ |
EXPOSE_RULESET | अपनी Ruleset को अन्य लैडरों के लिए उपलब्ध कराएँ | true |
ALLOWED_DOMAINS | अनुमत डोमेन की अल्पविराम से अलग की गई सूची। खाली = कोई सीमा नहीं | `` |
ALLOWED_DOMAINS_RULESET | Ruleset से डोमेन की अनुमति दें। false = कोई सीमा नहीं | false |
FLARESOLVERR_HOST | Cloudflare बाईपास के लिए FlareSolverr सेवा का URL (वैकल्पिक) | http://localhost:8191 |