
API Scraper Agent वेब API's के लिए
प्राकृतिक भाषा के माध्यम से किसी भी वेबसाइट के आंतरिक API का रिवर्स-इंजीनियरिंग करें
आधुनिक वेबसाइटें छिपे हुए AJAX कॉल के माध्यम से डेटा लोड करती हैं:
Strot आपके लिए वेबसाइटों का विश्लेषण करता है और उनके आंतरिक API कॉल की खोज करता है।
Strot वास्तव में क्या करता है:
पूर्ण Strot अनुभव (Web UI + API) तुरंत प्राप्त करें:
Patchright ब्राउज़र का उपयोग करना
docker run -d --name browser-server -p 5678:5678 synacktra/patchright-headless-server
STROT_ANTHROPIC_API_KEY=sk-ant-apiXXXXXX \
docker compose -f https://raw.githubusercontent.com/vertexcover-io/strot/refs/heads/main/docker-compose.yml up
या, Steel ब्राउज़र का उपयोग करना
STROT_BROWSER_WS_URL=wss://connect.steel.dev?apiKey=ste-XXXXXX STROT_ANTHROPIC_API_KEY=sk-ant-apiXXXXXX \
docker compose -f https://raw.githubusercontent.com/vertexcover-io/strot/refs/heads/main/docker-compose.yml up
फिर यहाँ जाएं:
pip install strot
या uv का उपयोग करके:
uv pip install strot
import strot
import asyncio
from pydantic import BaseModel
class Review(BaseModel):
title: str | None = None
username: str | None = None
rating: float | None = None
comment: str | None = None
date: str | None = None
async def get_reviews():
# Strot उस आंतरिक API की खोज करता है जो समीक्षाएँ लोड करता है
source = await strot.analyze(
url="https://www.getcleanpeople.com/product/fresh-clean-laundry-detergent/",
query="रेटिंग और टिप्पणियों वाली ग्राहक समीक्षाएँ",
output_schema=Review,
code_executor="e2b" # डिफ़ॉल्ट "unsafe" है
)
# वेबसाइट द्वारा उपयोग किए जाने वाले उसी API कॉल का उपयोग करें, पूर्ण पैरामीटर नियंत्रण के साथ
async for reviews in source.generate_data(limit=500, offset=100, sortBy="date desc"):
for review in reviews:
print(f"{review['rating']}⭐ by {review['username']}: {review['comment']}")
if __name__ == "__main__":
asyncio.run(get_reviews())
import strot
import asyncio
from pydantic import BaseModel
class Product(BaseModel):
name: str | None = None
price: float | None = None
rating: float | None = None
availability: str | None = None
description: str | None = None
async def get_products():
# Strot वह AJAX एंडपॉइंट ढूंढता है जो उत्पाद सूचियाँ लोड करता है
source = await strot.analyze(
url="https://blinkit.com/cn/fresh-vegetables/cid/1487/1489",
query="नाम और मूल्य वाले सूचीबद्ध उत्पाद।",
output_schema=Product
)
# source में अपनी पसंद का कोड एक्ज़ीक्यूटर सेट करें
source.set_code_executor("e2b")
# कस्टम फ़िल्टरिंग और सॉर्टिंग के साथ सभी उत्पादों तक पहुँचें
async for products in source.generate_data(limit=100, offset=0, category="vegetables", sortBy="price"):
for product in products:
print(f"{product['name']}: ${product['price']} ({product['rating']}⭐)")
if __name__ == "__main__":
asyncio.run(get_products())
Strot एक MCP (Model Context Protocol) सर्वर प्रदान करता है जो Claude जैसे MCP क्लाइंट को सीधे वेबसाइटों का विश्लेषण करने और उनके आंतरिक APIs की खोज करने में सक्षम बनाता है।
git clone https://github.com/vertexcover-io/strot.git
cd strot && uv sync --group mcp
पर्यावरण चर सेट करें:
export STROT_ANTHROPIC_API_KEY=sk-ant-apiXXXXXX
export STROT_BROWSER_MODE_OR_WS_URL=headless # या 'headed' या ws://browser-url
यदि आप होस्टेड ब्राउज़र का उपयोग करना चाहते हैं, तो आप निम्न कार्य कर सकते हैं:
Docker के अंदर एक हेडलेस सर्वर चलाएँ
docker run -d --name browser-server -p 5678:5678 synacktra/patchright-headless-server
export STROT_BROWSER_MODE_OR_WS_URL=ws://localhost:5678/patchright
या, किसी दूरस्थ ब्राउज़र सर्वर से कनेक्ट करें:
export STROT_BROWSER_MODE_OR_WS_URL=wss://...
$ uv run strotmcp
Usage: strotmcp COMMAND
╭─ कमांड्स ─────────────────────────────────────────────╮
│ http एक http सर्वर प्रारंभ करें। │
│ sse एक sse सर्वर प्रारंभ करें। │
│ stdio एक stdio सर्वर प्रारंभ करें। │
│ streamable-http एक streamable http सर्वर प्रारंभ करें।│
╰────────────────────────────────────────────────────────╯
stdio ट्रांसपोर्ट
claude mcp add strot-mcp "uv run strotmcp stdio" --transport stdio \
--env STROT_ANTHROPIC_API_KEY=$STROT_ANTHROPIC_API_KEY STROT_BROWSER_MODE_OR_WS_URL=$STROT_BROWSER_MODE_OR_WS_URL
sse, http, streamable-http ट्रांसपोर्ट
MCP सर्वर को वांछित ट्रांसपोर्ट के साथ एक अलग टर्मिनल में चलाएँ:
uv run strotmcp sse --port 8888
# uv run strotmcp http --host 0.0.0.0
# uv run strotmcp streamable-http --host 127.0.0.1 --port 8777
MCP सर्वर को Claude में जोड़ें:
claude mcp add strot-mcp http://127.0.0.1:8888/sse --transport sse
विभिन्न वेबसाइटों और व्यक्तिगत घटकों पर Strot के विश्लेषण की सटीकता का परीक्षण और सत्यापन करें। मूल्यांकन प्रणाली पाँच इनपुट प्रकारों का समर्थन करती है:
यह वास्तविक परिणामों की अपेक्षित परिणामों से तुलना करता है, स्रोत URL मिलान, पेजिनेशन कुंजी पहचान, डायनेमिक पैरामीटर पहचान और इकाई गणना सटीकता जैसे मेट्रिक्स पर नज़र रखता है। सभी मूल्यांकन और उनके विस्तृत विश्लेषण चरण Airtable में संग्रहीत किए जाते हैं।
git clone https://github.com/vertexcover-io/strot.git
cd strot && uv sync --group eval
एक नया Airtable बेस बनाएँ:
Create बटन पर क्लिक करेंBuild an app on your own चुनेंappXXXXXXXXXXXXXX)एक पर्सनल एक्सेस टोकन बनाएँ:
/create/tokens पर जाएँdata.records:readdata.records:writeschema.bases:readschema.bases:writeCreate token दबाएँ और टोकन कॉपी करें (जैसे patXXXXXXXXXXXXXX)पर्यावरण चर सेट करें:
नोट: जब आप मूल्यांकन चलाएँगे, तो आवश्यक तालिकाएँ उपयुक्त स्कीमा के साथ स्वचालित रूप से बनाई जाती हैं।
$ uv run stroteval
Usage: stroteval [OPTIONS]
एक फ़ाइल या stdin से कई जॉब-आधारित या टास्क-आधारित इनपुट का मूल्यांकन करें।
╭─ पैरामीटर ──────────────────────────────────────────────────────────────────╮
│ --file -f JSON/JSONL फ़ाइल का पथ। यदि प्रदान नहीं किया गया, तो stdin से पढ़ता है। │
╰───────────────────────────────────────────────────────────────────────────────╯
यदि आप जॉब-आधारित इनपुट का मूल्यांकन कर रहे हैं, तो सुनिश्चित करें कि API सर्वर चल रहा है।
echo '[
{
"job_id": "existing-job-uuid",
"expected_source": "https://api.example.com/reviews",
"expected_pagination_keys": ["cursor", "limit"],
"expected_dynamic_keys": ["sortBy", "category"],
"expected_entity_count": 243
},
{
"site_url": "https://example.com/category/abc",
"query": "नाम और मूल्य वाले सूचीबद्ध उत्पाद",
"expected_source": "https://api.example.com/products",
"expected_pagination_keys": ["limit", "offset"],
"expected_dynamic_keys": ["category", "sortBy"],
"expected_entity_count": 100
},
{
"request": {
"method": "GET",
"url": "https://example.com/api/products",
"type": "ajax",
"queries": {"page": "2", "limit": "50", "sortBy": "price", "category": "electronics"}
},
"expected_pagination_keys": ["page", "limit"],
"expected_dynamic_keys": ["sortBy", "category"]
},
{
"response": {
"value": "",
"request": {
"method": "GET",
"url": "https://example.com/api/reviews",
"type": "ajax"
},
"preprocessor": {"element_selector": ".reviews-container"}
},
"output_schema_file": "review_schema.json",
"expected_entity_count": 10
}
]' | uv run stroteval
MIT लाइसेंस - इसे अपनी इच्छानुसार उपयोग करें!
Vertexcover Labs द्वारा ❤️ के साथ बनाया गया
export STROT_AIRTABLE_BASE_ID=appXXXXXXXXXXXXXX
export STROT_AIRTABLE_TOKEN=patXXXXXXXXXXXXXX
# यदि आप अलग-अलग कार्यों का मूल्यांकन करना चाहते हैं तो निम्न सेट करें
export STROT_ANTHROPIC_API_KEY=sk-ant-apiXXXXXX