2.7 KiB
2.7 KiB
You.com — New Survey + Modal Key Creation Flow (Oct 2026)
As of Oct 2026, the Sep 2026 survey walker is broken. The UI changed completely:
Flow (verified end-to-end, $100 credits extracted)
- OTP login still works: submit email → IMAP code → magic link → logged in
- Survey: "How did you hear about us?" — multi-select with 12 options (Podcast/newsletter, Instagram/TikTok/YouTube, Google, ChatGPT/Claude, GitHub, LinkedIn, Twitter/X, Word of mouth, etc.) + "Get started" button
- Click a radio button option, then click "Get started" (native playwright locator
page.get_by_text('Get started').first) - After Get started → redirected to
/platform
- Click a radio button option, then click "Get started" (native playwright locator
- Keys page:
/platform/keysreturns 404. The new keys page is/platform— dashboard with "Create your API key" section and "+ Create API key" button. - Create key modal: Clicking "+ Create API key" opens modal "New API key" with:
- Input: "Key name*" (single text field)
- Buttons: Cancel / Create (black, right)
- Fill name: Use native playwright
page.locator('input:not([type=hidden])').first.fill('key-1')— NOT JS value setter (React deadlocks on synthetic events) - Click Create:
page.locator("button:has-text('Create'):not(:has-text('key'))").last—.firsthits the BACKGROUND "+ Create API key" button, reopening the modal instead of submitting. Use.lastto target the modal button. - Key: ydc- format (same regex
ydc-[A-Za-z0-9_-]{10,}), visible in page HTML after creation and in network responses
Network interceptor pattern (catches key even if page scan fails)
CAPTURED = []
async def on_resp(resp):
ct = resp.headers.get('content-type', '')
if 'json' in ct:
body = await resp.text()
if 'ydc-' in body:
CAPTURED.append({'url': resp.url, 'body': body})
page.on('response', on_resp)
Pitfalls
- Button targeting: There are TWO visible "Create" buttons: the background "+ Create API key" and the modal "Create".
.first= background = opens a new modal (breaks flow). Usebutton:has-text('Create'):not(:has-text('key')).last. - Survey URL never changes during survey steps — don't wait for URL change; use DOM content detection.
- JS value setter on React inputs:
Object.getOwnPropertyDescriptor(HTMLInputElement.prototype, 'value').set.call(...)triggers React but may deadlock. Prefer native playwrightlocator.fill(). - find_keys still works on page HTML after successful key creation — the ydc- key appears in the DOM.
- $10 base + $90 verification: Account starts with $10. GitHub/work-email verification adds $90. Registration flow sets OTP-only auth (no password). Subsequent logins need OTP magic link.