AWS WAF को Crawl4AI में CapSolver एकीकरण के साथ कैसे हल करें

Rajinder Singh
Deep Learning Researcher
21-Oct-2025

परिचय
एमेजॉन वेब सेवाएं (AWS) वेब एप्लिकेशन फ़ायरवॉल (WAF) एक शक्तिशाली सुरक्षा सेवा है जो उपलब्धता, सुरक्षा के उल्लंघन या असामान्य संसाधन उपयोग को प्रभावित कर सकने वाले सामान्य वेब हमलों से वेब एप्लिकेशन की रक्षा करने में मदद करती है। वेब संसाधनों की सुरक्षा के लिए आवश्यक, AWS WAF ऑटोमेटेड वेब स्क्रैपिंग और डेटा निकालने प्रक्रियाओं के लिए एक महत्वपूर्ण चुनौती प्रस्तुत कर सकता है, जो अक्सर वैध क्रॉलर को ब्लॉक कर देता है।
इस लेख में, Crawl4AI के साथ CapSolver के एवं एक उन्नत वेब क्रॉलर के साथ एकीकरण के बारे में व्यापक गाइड प्रदान करता है, जो एक नेटवर्क एंटी-बॉट समाधान सेवा है, जो AWS WAF सुरक्षाओं को समाप्त करने में प्रभावी रूप से मदद करता है। हम एपीआई-आधारित और एक्सटेंशन एकीकरण विधि के बारे में विस्तार से विवरण देंगे, जिसमें कोड उदाहरण और स्पष्टीकरण शामिल हैं, ताकि आपके वेब ऑटोमेशन कार्य बाधा के बिना जारी रह सकें।
AWS WAF के बारे में समझ और वेब स्क्रैपिंग के लिए चुनौतियां
AWS WAF एमेजॉन क्लाउडफ्रंट वितरण, एप्लिकेशन लोड बैलेंसर, एमेजॉन एपी गेटवे, या AWS AppSync ग्राफ़क्वेरी एपी के माध्यम से फ़ॉरवर्ड किए गए HTTP(S) अनुरोधों को निरीक्षण करता है। यह आपको नियम निर्धारित करने की अनुमति देता है जो सामान्य हमला पैटर्न, जैसे SQL इंजेक्शन या क्रॉस-साइट स्क्रिप्टिंग, को ब्लॉक करते हैं, और आईपी पतों, HTTP हेडर, HTTP बॉडी या URI स्ट्रिंग्स के आधार पर ट्रैफिक फ़िल्टर कर सकते हैं। वेब क्रॉलर के लिए, यह अक्सर निम्नलिखित के रूप में होता है:
- अनुरोध फ़िल्टरिंग: WAF नियम ऑटोमेटेड या खतरनाक अनुरोधों की पहचान कर सकते हैं और ब्लॉक कर सकते हैं।
- कुकी-आधारित पुष्टि: AWS WAF अक्सर वैध उपयोगकर्ता सत्रों को ट्रैक करने के लिए विशिष्ट कुकी का उपयोग करता है। बिना इन कुकी के, अनुरोध अक्सर अस्वीकृत कर दिए जाते हैं।
- डायनामिक चुनौतियां: एक पारंपरिक कैप्चा के रूप में नहीं, लेकिन अंतर्निहित तकनीक एक बाधा के रूप में कार्य कर सकती है, जिसमें विशिष्ट टोकन या सत्र पहचानकर्ता के लिए आवश्यकता होती ह।
CapSolver के द्वारा आवश्यक aws-waf-token कुकी प्राप्त करने के लिए एक मजबूत समाधान प्रदान किया जाता है, जो वेब स्क्रैपिंग के दौरान AWS WAF को पार करने के लिए महत्वपूर्ण है। Crawl4AI के साथ एकीकरण के साथ, यह आपके क्रॉलर को वैध उपयोगकर्ता व्यवहार की नकल करने और सुरक्षित साइटों को सफलतापूर्वक नेविगेट करने में सक्षम बनाता है।
💡 Crawl4AI एकीकरण उपयोक्ताओं के लिए विशेष बोनस:
इस एकीकरण के उत्सव के रूप में, हम इस पाठ्यक्रम के माध्यम से पंजीकृत सभी CapSolver उपयोक्ताओं के लिए एक विशेष 6% बोनस कोड —CRAWL4प्रदान कर रहे हैं।
बस डैशबोर्ड में भुगतान करते समय कोड दर्ज करें ताकि आपको तुरंत 6% अतिरिक्त क्रेडिट मिल सके।
विधि 1: Crawl4AI के साथ CapSolver API एकीकरण
Crawl4AI और CapSolver के साथ AWS WAF चुनौतियों का सामना करने का सबसे प्रभावी तरीका API एकीकरण है। इस विधि में, CapSolver के माध्यम से आवश्यक aws-waf-token कुकी प्राप्त करना शामिल है, और फिर इस टोकन को Crawl4AI के ब्राउज़र सत्र में कुकी के रूप में डालना शामिल है और लक्ष्य पृष्ठ को पुनः लोड करना।
कैसे काम करता है:
- प्रारंभिक नेविगेशन: Crawl4AI एक AWS WAF द्वारा सुरक्षित लक्ष्य वेब पृष्ठ के लिए पहुंच का प्रयास करता है।
- WAF चुनौती की पहचान: WAF के सामने आने पर, आपके स्क्रिप्ट आवश्यकता के लिए
aws-waf-tokenके आवश्यकता की पहचान करेगा। - AWS WAF कुकी प्राप्त करें: अपने SDK के साथ CapSolver के API को बुलाएं,
AntiAwsWafTaskProxyLessप्रकार के साथwebsiteURLके साथ निर्दिष्ट करें। CapSolver आवश्यकaws-waf-tokenकुकी लौटाएगा। - कुकी डालें और पुनः लोड करें: Crawl4AI के
js_codeकार्यक्षमता का उपयोग करके आप प्राप्तaws-waf-tokenको ब्राउज़र के सत्र में कुकी के रूप में सेट कर सकते हैं। कुकी सेट होने के बाद, पृष्ठ को पुनः लोड किया जाता है। - कार्य जारी रखें: सही
aws-waf-tokenकुकी के साथ, Crawl4AI अब सुरक्षित पृष्ठ के लिए सफलतापूर्वक पहुंच कर सकता है और अपने डेटा निकालने के कार्यों को जारी रख सकता है।
उदाहरण कोड: AWS WAF के लिए API एकीकरण
निम्नलिखित पायथन कोड AWS WAF चुनौतियों के साथ निपटने के लिए CapSolver के API के साथ Crawl4AI के एकीकरण को दर्शाता है। इस उदाहरण में, AWS WAF द्वारा सुरक्षित पोर्शे NFT ओनबोर्डिंग पृष्ठ के लिए लक्ष्य किया गया है।
python
import asyncio
import capsolver
from crawl4ai import *
# TODO: अपना कॉन्फ़िग सेट करें
api_key = "CAP-xxxxxxxxxxxxxxxxxxxxx" # आपका CapSolver के लिए एपी एसी कुंजी
site_url = "https://nft.porsche.com/onboarding@6" # अपने लक्ष्य साइट का पृष्ठ पता
cookie_domain = ".nft.porsche.com" # आप कुकी लगाना चाहते हैं उस डोमेन का नाम
captcha_type = "AntiAwsWafTaskProxyLess" # अपने लक्ष्य कैप्चा के प्रकार
capsolver.api_key = api_key
async def main():
browser_config = BrowserConfig(
verbose=True,
headless=False,
use_persistent_context=True,
)
async with AsyncWebCrawler(config=browser_config) as crawler:
await crawler.arun(
url=site_url,
cache_mode=CacheMode.BYPASS,
session_id="session_captcha_test"
)
# CapSolver SDK के माध्यम से AWS WAF कुकी प्राप्त करें
solution = capsolver.solve({
"type": captcha_type,
"websiteURL": site_url,
})
cookie = solution["cookie"]
print("AWS WAF कुकी:", cookie)
js_code = """
document.cookie = \'aws-waf-token=""" + cookie + """;domain=""" + cookie_domain + """;path=/\
\';
location.reload();
"""
wait_condition = """() => {
return document.title === \'Join Porsche’s journey into Web3\';
}"""
run_config = CrawlerRunConfig(
cache_mode=CacheMode.BYPASS,
session_id="session_captcha_test",
js_code=js_code,
js_only=True,
wait_for=f"js:{wait_condition}"
)
result_next = await crawler.arun(
url=site_url,
config=run_config,
)
print(result_next.markdown)
if __name__ == "__main__":
asyncio.run(main())
कोड विश्लेषण:
- CapSolver SDK कॉल:
capsolver.solveविधि का उपयोगAntiAwsWafTaskProxyLessप्रकार औरwebsiteURLके साथ किया जाता है ताकिaws-waf-tokenकुकी प्राप्त कर सकें। यह चरण आवश्यक है जहां CapSolver के एआई वाफ चुनौती के समाधान करता है और आवश्यक कुकी प्रदान करता है। - जावास्क्रिप्ट डालें (
js_code):js_codeस्ट्रिंग में जावास्क्रिप्ट शामिल है जो ब्राउज़र के सत्र मेंaws-waf-tokenकुकी सेट करता हैdocument.cookieके माध्यम से। फिर यहlocation.reload()को ट्रिगर करता है ताकि बाद के अनुरोध में नए रूप से सेट की गई वैध कुकी शामिल हो सके। wait_forशर्त:wait_conditionको निर्दिष्ट किया गया है ताकि Crawl4AI पृष्ठ के शीर्षक के 'Join Porsche’s journey into Web3' के साथ मेल खाने के लिए प्रतीक्षा करे, जो वाफ के सफलतापूर्वक ब्लॉक किए जाने के बाद लक्षित सामग्री के लोड होने के संकेत के रूप में कार्य करता है।
विधि 2: CapSolver ब्राउज़र एक्सटेंशन एकीकरण
CapSolver के ब्राउज़र एक्सटेंशन के माध्यम से AWS WAF चुनौतियों के साथ निपटना आसान तरीका है, विशेष रूप से जब Crawl4AI द्वारा प्रबंधित स्थायी ब्राउज़र सत्र के साथ इसके स्वचालित समाधान क्षमताओं का उपयोग कर रहे हों।
कैसे काम करता है:
- स्थायी ब्राउज़र सत्र: Crawl4AI को एक
user_data_dirके साथ ब्राउज़र उदाहरण शुरू करने के लिए कॉन्फ़िगर करें, जो CapSolver एक्सटेंशन और इसके विन्यास के साथ बना रहता है। - एक्सटेंशन स्थापित करें और सेट करें: इस ब्राउज़र प्रोफ़ाइल में CapSolver एक्सटेंशन स्थापित करें और अपने CapSolver एपी एस कुंजी को सेट करें। एक्सटेंशन को स्वचालित रूप से AWS WAF चुनौतियों को हल करने के लिए सेट करें।
- लक्ष्य पृष्ठ पर जाएं: Crawl4AI AWS WAF द्वारा सुरक्षित पृष्ठ पर जाता है।
- स्वचालित समाधान: ब्राउज़र सत्र में चल रहा CapSolver एक्सटेंशन AWS WAF चुनौती की पहचान करता है और स्वचालित रूप से
aws-waf-tokenकुकी प्राप्त करता है। इस कुकी को बाद के अनुरोधों में स्वचालित रूप से लगाया जाता है। - कार्य जारी रखें: जब एक्सटेंशन द्वारा AWS WAF समाधान किया जाता है, तो Crawl4AI अपने स्क्रैपिंग कार्यों को जारी रख सकता है, क्योंकि ब्राउज़र सत्र के बाद के अनुरोधों के लिए आवश्यक वैध कुकी अब उपलब्ध हैं।
उदाहरण कोड: AWS WAF के लिए एक्सटेंशन एकीकरण (स्वचालित समाधान)
इस उदाहरण में Crawl4AI के एक ब्राउज़र प्रोफ़ाइल के साथ एक्सटेंशन के उपयोग के लिए कॉन्फ़िगरेशन के बारे में दर्शाया गया है।
python
import asyncio
import time
from crawl4ai import *
# TODO: अपना कॉन्फ़िग सेट करें
user_data_dir = "/browser-profile/Default1" # सुनिश्चित करें कि इस पथ को सही तरीके से सेट किया गया है और आपके विन्यास एक्सटेंशन शामिल है
browser_config = BrowserConfig(
verbose=True,
headless=False,
user_data_dir=user_data_dir,
use_persistent_context=True,
proxy="http://127.0.0.1:13120", # आवश्यकता होने पर प्रॉक्सी कॉन्फ़िगर करें
)
async def main():
async with AsyncWebCrawler(config=browser_config) as crawler:
result_initial = await crawler.arun(
url="https://nft.porsche.com/onboarding@6",
cache_mode=CacheMode.BYPASS,
session_id="session_captcha_test"
)
# एक्सटेंशन स्वचालित रूप से वाफ को हल करता है।
# आपको वाफ के समाधान के बाद आगे के कार्य करने से पहले एक प्रतीक्षा शर्त या time.sleep जोड़ने की आवश्यकता हो सकती है।
time.sleep(30) # उदाहरण के लिए प्रतीक्षा, आवश्यकता के अनुसार समायोजित करें
# वाफ के समाधान के बाद अन्य Crawl4AI कार्य जारी रखें
# उदाहरण के लिए, सफल पुष्टि के बाद दिखाई देने वाले तत्वों या सामग्री की जांच करें
# print(result_initial.markdown) # आप प्रतीक्षा के बाद पृष्ठ सामग्री की जांच कर सकते हैं
if __name__ == "__main__":
asyncio.run(main())
कोड विश्लेषण:
user_data_dir: यह पैरामीटर Crawl4AI के लिए महत्वपूर्ण है जो एक ब्राउज़र उदाहरण शुरू करता है जो स्थापित CapSolver एक्सटेंशन और इसके विन्यास को बरकरार रखता है। सुनिश्चित करें कि पथ एक वैध ब्राउज़र प्रोफ़ाइल निर्देशिका को संदर्भित करता है जहां एक्सटेंशन स्थापित है।- स्वचालित समाधान: CapSolver एक्सटेंशन के डिज़ाइन के अनुसार, वाफ चुनौतियों की पहचान करता है और स्वचालित रूप से हल करता है।
time.sleepको सामान्य स्थान के रूप में शामिल किया गया है ताकि एक्सटेंशन के पृष्ठभूमि कार्य करने के लिए समय दिया जा सके। अधिक विश्वसनीय समाधान के लिए, Crawl4AI केwait_forकार्यक्षमता का उपयोग वाफ के समाधान के बाद पृष्ठ में बदलाव की जांच करने के लिए करें।
उदाहरण कोड: AWS WAF के लिए एक्सटेंशन एकीकरण (हस्तचालित समाधान)
अगर आप अपने स्क्रैपिंग तकनीक में विशिष्ट बिंदु पर वाफ समाधान हस्तचालित रूप से ट्रिगर करना पसंद करते हैं, तो आप एक्सटेंशन के manualSolving पैरामीटर को true पर सेट कर सकते हैं और फिर एक्सटेंशन द्वारा प्रदान किए गए सॉल्वर बटन पर क्लिक करने के लिए js_code का उपयोग कर सकते हैं।
python
import asyncio
import time
from crawl4ai import *
# TODO: अपना कॉन्फ़िग सेट करें
user_data_dir = "/browser-profile/Default1" # सुनिश्चित करें कि इस पथ को सही तरीके से सेट किया गया है और आपके विन्यास एक्सटेंशन शामिल है
browser_config = BrowserConfig(
verbose=True,
headless=False,
user_data_dir=user_data_dir,
use_persistent_context=True,
proxy="http://127.0.0.1:13120", # आवश्यकता होने पर प्रॉक्सी कॉन्फ़िगर करें
)
async def main():
async with AsyncWebCrawler(config=browser_config) as crawler:
result_initial = await crawler.arun(
url="https://nft.porsche.com/onboarding@6",
cache_mode=CacheMode.BYPASS,
session_id="session_captcha_test"
)
# पृष्ठ लोड होने और एक्सटेंशन तैयार होने के लिए एक क्षण का प्रतीक्षा करें
time.sleep(6)
# CapSolver एक्सटेंशन द्वारा प्रदान किए गए `#capsolver-solver-tip-button` पर क्लिक घटना के लिए js_code का उपयोग करें
js_code = """
let solverButton = document.querySelector(\'#capsolver-solver-tip-button\');
if (solverButton) {
// क्लिक घटना
const clickEvent = new MouseEvent(\'click\', {
bubbles: true,
cancelable: true,
view: window
});
solverButton.dispatchEvent(clickEvent);
}
"""
print(js_code)
run_config = CrawlerRunConfig(
cache_mode=CacheMode.BYPASS,
session_id="session_captcha_test",
js_code=js_code,
js_only=True,
)
result_next = await crawler.arun(
url="https://nft.porsche.com/onboarding@6",
config=run_config
)
print("जेएस निष्पादन परिणाम:", result_next.js_execution_result)
# हस्तचालित ट्रिगर के बाद AWS WAF के समाधान के लिए समय दें
time.sleep(30) # उदाहरण के लिए प्रतीक्षा, आवश्यकता के अनुसार समायोजित करें
# अन्य Crawl4AI कार्य जारी रखें
if __name__ == "__main__":
asyncio.run(main())
कोड विश्लेषण:
manualSolving: इस कोड चलाने से पहले, सुनिश्चित करें कि CapSolver एक्सटेंशन केconfig.jsमेंmanualSolvingकोtrueपर सेट किया गया है।- समाधान ट्रिगर करें:
js_code#capsolver-solver-tip-buttonपर क्लिक घटना के सिमुलेशन करता है, जो CapSolver एक्सटेंशन द्वारा प्रदान किए गए हस्तचालित समाधान बटन है। इससे आपको वाफ समाधान प्रक्रिया के शुरू होने के समय पर पूर्ण नियंत्रण मिलता है।
निष्कर्ष
Crawl4AI के साथ CapSolver के एकीकरण वेब स्क्रैपिंग और डेटा निकालने के लिए एक विश्वसनीय और कुशल समाधान प्रदान करता है। वाफ सुरक्षा के माध्यम से बिना किसी बाधा के बिना बाधा के साथ बाधा रहित वेब स्क्रैपिंग के लिए आपके ऑटोमेटेड प्रक्रियाओं को सुनिश्चित करता है। CapSolver के आवश्यक aws-waf-token प्राप्त करने की क्षमता के साथ Crawl4AI के लचीले js_code इंजेक्शन क्षमता के माध्यम से, डेवलपर अपने ऑटोमेशन के लिए वाफ-सुरक्षित वेबसाइटों के माध्यम से बिना किसी बाधा के नेविगेशन सुनिश्चित कर सकते हैं।
इस एकीकरण ने आपके क्रॉलर की स्थिरता और सफलता दर को बढ़ाया है और जटिल एंटी-बॉट तकनीकों के प्रबंधन से जुड़े ऑपरेशनल ओवरहेड को बहुत कम कर दिया है। इस शक्तिशाली संयोजन के साथ, आप अधिक सुरक्षित रूप से सुरक्षित वेब एप्लिकेशन से डेटा एकत्र करने में आत्मविश्वास से जारी रख सकते हैं।
अक्सर पूछे जाने वाले प्रश्न (FAQ)
Q1: AWS WAF क्या है और वेब स्क्रैपिंग में इसका उपयोग क्यों किया जाता है?
A1: AWS WAF (वेब एप्लिकेशन फ़ायरवॉल) एक क्लाउड-आधारित सुरक्षा सेवा है जो वेब एप्लिकेशन को सामान्य वेब हमलों से बचाता है। वेब स्क्रैपिंग में, इसे एक एंटी-बॉट युक्ति के रूप में पाया जाता है जो संदिग्ध या ऑटोमेटेड अनुरोध को ब्लॉक करता है, जिसके कारण लक्ष्य डेटा के लिए पहुंच के लिए ब्लॉक करने के तकनीक की आवश्यकता होती है।
Q2: CapSolver AWS WAF को कैसे पार करता है?
A2: CapSolver विशेष सेवाएं, जैसे AntiAwsWafTaskProxyLess, प्रदान करता है जो AWS WAF चुनौतियों को हल करता है। यह आवश्यक aws-waf-token कुकी प्राप्त करता है, जिसका उपयोग Crawl4AI द्वारा वैध उपयोगकर्ता व्यवहार की नकल करने के लिए किया जाता है और सुरक्षित वेबसाइट तक पहुंच प्राप्त करने के लिए किया जाता है।
Q3: AWS WAF के साथ Crawl4AI और CapSolver के मुख्य एंटीग्रेशन विधियां क्या हैं?
A3: दो मुख्य विधियां हैं: API एंटीग्रेशन, जहां CapSolver के API को aws-waf-token प्राप्त करने के लिए कॉल किया जाता है जो फिर Crawl4AI के js_code के माध्यम से डाला जाता है, और ब्राउज़र एक्सटेंशन एंटीग्रेशन, जहां CapSolver एक्सटेंशन एक स्थायी ब्राउज़र के संदर्भ में WAF चुनौती को स्वचालित रूप से निपटाता है।
Q4: CapSolver के साथ AWS WAF हल करते समय प्रॉक्सी का उपयोग करना आवश्यक है?
A4: जबकि हमेशा आवश्यक नहीं होता, प्रॉक्सी का उपयोग लाभदायक हो सकता है, विशेष रूप से जब आपके रॉबोट निर्माण कार्य अनामिकता बनाए रखने या विशिष्ट भौगोलिक स्थानों से मांग के अनुकरण की आवश्यकता होती है। CapSolver के कार्य अक्सर प्रॉक्सी कॉन्फ़िगरेशन का समर्थन करते हैं।
Q5: AWS WAF के लिए Crawl4AI और CapSolver के एंटीग्रेशन के लाभ क्या हैं?
A5: एंटीग्रेशन ऑटोमेटेड WAF हैंडलिंग, सुधारे गए क्रॉलिंग दक्षता, एंटी-बॉट मेकैनिज़म के खिलाफ क्रॉलर की बेहतर प्रतिरोधकता, और हस्तचालित हस्तक्षेप को कम करके ऑपरेशनल लागत में कमी के लिए लाता है।
संदर्भ
अनुपालन अस्वीकरण: इस ब्लॉग पर प्रदान की गई जानकारी केवल सूचनात्मक उद्देश्यों के लिए है। CapSolver सभी लागू कानूनों और विनियमों का पालन करने के लिए प्रतिबद्ध है। CapSolver नेटवर्क का उपयोग अवैध, धोखाधड़ी या दुरुपयोग करने वाली गतिविधियों के लिए करना सख्त वर्जित है और इसकी जांच की जाएगी। हमारे कैप्चा समाधान उपयोगकर्ता अनुभव को बेहतर बनाने के साथ-साथ सार्वजनिक डेटा क्रॉलिंग के दौरान कैप्चा कठिनाइयों को हल करने में 100% अनुपालन सुनिश्चित करते हैं। हम अपनी सेवाओं के जिम्मेदार उपयोग की प्रोत्साहना करते हैं। अधिक जानकारी के लिए, कृपया हमारी सेवा की शर्तें और गोपनीयता नीति पर जाएं।
अधिक

एवीएस कैप्चा को नोड जेएस के साथ कैसे हल करें
इस लेख में, हम आपको AWS कैप्चा / चैलेंज कैसे हल करें के साथ दिखाएंगे।

Aloísio Vítor
03-Nov-2025

एवएस डब्ल्यूएफ कैप्चा के स्वचालित समाधान ब्राउज़र या एपीआई इंटीग्रेशन के माध्यम से
ब्राउजर एक्सटेंशन और एपीआई एकीकरण के उपयोग से AWS WAF CAPTCHA को स्वचालित रूप से हल करना सीखें। इस गाइड में चित्र पहचान, टोकन-आधारित चुनौतियां और CapSolver समाधान शामिल हैं जो सीमाहीन ऑटोमेशन और वेब डेटा निकालने के लिए हैं।

Rajinder Singh
23-Oct-2025

AWS WAF को Crawl4AI में CapSolver एकीकरण के साथ कैसे हल करें
जानें कैसे Crawl4AI में AWS WAF सुरक्षाओं को हल करें CapSolver के API और ब्राउज़र एक्सटेंशन इंटीग्रेशन विधियों के उपयोग से। यह गाइड सीमलेस वेब स्क्रैपिंग के लिए कोड उदाहरण प्रदान करता है।

Rajinder Singh
21-Oct-2025

सबसे अच्छा एवीएस डब्ल्यूएफ कैप्चा सॉल्वर स्वचालन एवं स्क्रैपिंग के लिए
AWS WAF CAPTCHA सॉल्वर की खोज करें। CapSolver का एआई-आधारित समाधान तत्काल WAF चुनौतियों को बायपास करता है, जो अविच्छिन्न वेब स्क्रैपिंग और स्केल पर ऑटोमेशन की गारंटी देता है।

Rajinder Singh
17-Oct-2025


