Latest AI-Driven Retail Tools: Proxy Powers Next-Gen E-Commerce Automation
July 10, 2025 AI e-commerce tools rely on GoProxy’s rotating, geo-targeted proxies for real-time pricing, inventory, and shipping optimization.
Jul 11, 2025
A 6-step GoProxy workflow for IRCTC Tatkal automation under India’s July 2025 Aadhaar-OTP mandate, merging legacy recipes with compliance.
Key Info at a Glance
In July 2025, Indian Railways imposed an Aadhaar-based OTP check on its Tatkal ticket platform—covering IRCTC’s website, mobile app, PRS counters, and travel agents. This strengthens fairness by blocking bot-driven bulk bookings but disrupts longstanding proxy‑driven automation.
Many users, accustomed to rotating proxy pools and rapid-fire scripts, now encounter “Verification Required” errors, session timeouts, and a mandatory 30-minute blackout that neutralizes brute-force tactics. To restore reliable automation, you must integrate OTP handling, maintain IP-session consistency, and respect the blackout window.
This guide breaks down each requirement into six clear steps, with purpose, prerequisites, concrete commands or code snippets, pro‑tips, and verification checks—ensuring both beginners and professionals can follow along and adapt GoProxy workflows.
Date | Requirement |
By July 1, 2025 | Link your IRCTC profile to Aadhaar/Virtual ID |
From July 15, 2025 | Every Tatkal booking must include an OTP check |
Daily Window | No automated/agent bookings: AC 10:00–10:30 AM;NonAC 11:00–11:30 AM |
Enter a 12-digit Aadhaar number or UIDAI-issued VID under My Profile → Link Aadhaar.
IRCTC calls UIDAI’s e-KYC API to send an OTP to the registered mobile.
Input the OTP to authenticate and lock down your official name and address.
After filling passenger details and clicking Book, IRCTC triggers an SMS OTP to your Aadhaar‑linked phone. Successful booking only after entering the correct OTP.
Automated or agent-based bookings are paused for the first 30 minutes of each Tatkal window, preventing bulk-booking services from sweeping seats.
Prepare your IRCTC account and proxy environment so you’re fully authenticated and equipped to handle OTPs, eliminating last-minute failures.
Active IRCTC account
Aadhaar number or Virtual ID (VID)
GoProxy dashboard access for reserving proxy pools
SMS-relay service credentials or readiness for manual OTP entry
Log in to IRCTC → My Profile → Link Aadhaar
Enter 12-digit Aadhaar/VID → click Send OTP
Receive OTP on your Aadhaar-registered mobile → enter to link
Allocate a dedicated pool (e.g., 5–10 IRCTC proxy IPs) for your IRCTC sessions. For easy identification, you can tag it as "Tatkal-July2025".
SMS-Relay: Obtain API key from your provider (e.g., Twilio) and configure a webhook endpoint
User Prompt: Plan a pause in your automation script to request manual OTP input from end users
In IRCTC → Master List, add frequent travelers’ names and details. Verify entries match Aadhaar-authenticated profile to avoid mismatch errors.
Use high-TTL (≥ 60 s) on your sticky IPs to prevent mid-booking churn. GoProxy supports that!
Store your SMS-relay API key securely, and test OTP delivery with a dummy IRCTC login.
Confirm IRCTC profile shows “Aadhaar Linked”
Send a test OTP via SMS‑relay API and verify you receive JSON with {"otp":"123456"}
Avoid the enforced 30-minute agent blackout by automating a precise pause and resume in your script, ensuring you only launch bookings when allowed.
System clock synced to IST (GMT+05:30)
Scheduler or cron‑like capability in your script environment
AC bookings: 10:00–10:30 AM IST
Non-AC bookings: 11:00–11:30 AM IST
In Python, for example:
python
import time, datetime
# Pause until blackout ends
target = datetime.datetime.now().replace(hour=10, minute=30, second=0)
while datetime.datetime.now() < target:
time.sleep(1)
Confirm current time ≥ target before proceeding to Step 3
Include a grace buffer of 2–3 seconds in your resume time to account for script startup.
Record blackout start and end times for audit and troubleshooting.
Check your logs show script idle during the blackout and resume exactly at target time.
Establish an IP‑session link using a reserved residential proxy to satisfy IRCTC’s IP‑Aadhaar consistency requirement.
Reserved GoProxy sticky IP pool from Step 1
Automation library (e.g., Selenium, Puppeteer)
python
proxy = go_proxy.assign_proxy(pool="Tatkal-July2025")
selenium_options.add_argument(f"--proxy-server=http://{proxy.ip}:{proxy.port}")
driver = webdriver.Chrome(options=selenium_options)
Navigate to https://www.irctc.co.in/nget/train-search under your proxy session
Load https://api.ipify.org?format=json to confirm the exit IP matches your allocated proxy
Reuse the same driver instance for Steps 3–5 to maintain session cookies.
If IP allocation fails, implement retry logic with a different sticky IP.
Ensure api.ipify.org returns the expected sticky IP.
Automatically complete form filling and trigger an OTP to the user’s Aadhaar-linked mobile, minimizing manual interactions and improving efficiency.
Pre‑saved Master List passenger index
Loaded the IRCTC booking page under the correct proxy session
python
driver.find_element(By.ID, "quotaTatkal").click()
driver.find_element(By.ID, "classAC").click() # or classNonAC
python
passenger = master_list[0] # first passenger
driver.find_element(By.NAME, "passengerName0").send_keys(passenger.name)
driver.find_element(By.NAME, "passengerAge0").send_keys(passenger.age)
python
driver.find_element(By.ID, "bookButton").click()
This action sends an OTP to the Aadhaar‑registered mobile.
Use explicit waits (e.g., Selenium’s WebDriverWait) to ensure elements are interactable.
Pre-load passenger data into a local cache to avoid network delays.
Observe the page transition to an OTP input field within 3 seconds of clicking “Book.”.
Retrieve the OTP and submit it swiftly to complete the booking process.
SMS‑relay API endpoint or user prompt mechanism
python
import requests, time
start = time.time()
while True:
resp = requests.get(
"https://api.smsrelay.com/v1/otps",
params={"session_id": SESSION_ID},
headers={"Authorization": f"Bearer {API_KEY}"}
)
if resp.status_code == 200 and resp.json().get("otp"):
otp = resp.json()["otp"]
break
if time.time() - start > 30:
raise TimeoutError("OTP fetch timed out")
time.sleep(1)
python
driver.find_element(By.ID, "otpInput").send_keys(otp)
driver.find_element(By.ID, "submitOtpButton").click()
python
if not otp:
otp = input("Enter OTP from your mobile: ")
submit_otp(otp)
Keep the proxy session active during OTP fetch to avoid IP changes.
Log timestamps for OTP request, retrieval, and submission to monitor latency.
IRCTC displays a confirmation message and PNR number.
Finalize the booking, log outcomes, and manage proxy resources for subsequent operations.
Successful OTP submission
python
pnr = driver.find_element(By.ID, "pnrNumber").text
log_success(session_id=SESSION_ID, pnr=pnr)
python
if "Verification Required" in driver.page_source:
log_failure(session_id=SESSION_ID, reason="Verification Required")
python
go_proxy.release_proxy(proxy) # or keep for next booking
driver.quit()
Retain the proxy if you plan multiple bookings in quick succession to reduce re‑auth delays.
Archive logs with timestamps, proxy IP, OTP latency, and outcome for audit.
Review your logs for a successful PNR or recorded error, ensuring proper cleanup.
OTP Latency: Time between OTP generation and capture.
Booking Success Rate: Confirmed bookings vs. attempts.
Error Patterns: Frequency of “Verification Required,” timeouts, or blackout breaches.
Notify operators if OTPs aren’t received in 45 seconds or if repeated session rejections occur.
Throttle retries when failure spikes indicate proxy health, mobile network, or UIDAI service issues.
The Aadhaar-OTP mandate reshapes Tatkal automation into a compliance-focused orchestration. Though friction increases, GoProxy’s sticky IRCTC IPs and SMS-relay integrations offer a resilient path to fast, fair bookings—transforming regulation into a competitive advantage. Sign up today and get a free trial!
Missed some basic info? Get up to speed on proxy configuration and script structure:
How to Automate IRCTC Ticket Booking »
< Previous
Next >