Spaces:
Paused
Paused
fix: remove name step (MS removed it), fix birth date JS syntax error
Browse filesMicrosoft signup flow is now: Email → Password → Country+DOB → Captcha.
Name step no longer exists. Also wrap birth date JS in IIFE to avoid
SyntaxError from top-level function declarations in CDP context.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- register/outlook_register.py +22 -30
register/outlook_register.py
CHANGED
|
@@ -336,46 +336,38 @@ def register_one(tid: int, proxy: Optional[str] = None, captcha_svc: Optional[Fu
|
|
| 336 |
# Debug: screenshot after password step
|
| 337 |
try:
|
| 338 |
page.get_screenshot(path="output/debug_step3.png", full_page=True)
|
|
|
|
|
|
|
| 339 |
print(f"[T{tid}] Step 3 URL: {page.url}")
|
| 340 |
except Exception:
|
| 341 |
pass
|
| 342 |
|
| 343 |
-
# --- Step 3:
|
| 344 |
-
first, last = _random_name()
|
| 345 |
-
# New Fluent UI uses name="FirstName" / name="LastName" or similar
|
| 346 |
-
_set_input('input[name="FirstName"], input[name="firstNameInput"]', first)
|
| 347 |
-
_set_input('input[name="LastName"], input[name="lastNameInput"]', last)
|
| 348 |
-
time.sleep(0.5)
|
| 349 |
-
_click_next()
|
| 350 |
-
time.sleep(3)
|
| 351 |
-
|
| 352 |
-
# --- Step 4: Enter birth date ---
|
| 353 |
year = random.randint(1975, 2000)
|
| 354 |
month = random.randint(1, 12)
|
| 355 |
day = random.randint(1, 28)
|
| 356 |
# New Fluent UI uses select dropdowns or input fields with name attributes
|
| 357 |
page.run_js(f"""
|
| 358 |
-
function
|
| 359 |
-
|
| 360 |
-
|
| 361 |
-
el
|
| 362 |
-
|
| 363 |
-
|
|
|
|
|
|
|
| 364 |
}}
|
| 365 |
-
|
| 366 |
-
|
| 367 |
-
|
| 368 |
-
|
| 369 |
-
|
| 370 |
-
|
| 371 |
-
|
| 372 |
-
|
| 373 |
-
|
| 374 |
-
|
| 375 |
-
|
| 376 |
-
yearInput.dispatchEvent(new Event('input', {{bubbles: true}}));
|
| 377 |
-
yearInput.dispatchEvent(new Event('change', {{bubbles: true}}));
|
| 378 |
-
}}
|
| 379 |
""")
|
| 380 |
time.sleep(0.5)
|
| 381 |
_click_next()
|
|
|
|
| 336 |
# Debug: screenshot after password step
|
| 337 |
try:
|
| 338 |
page.get_screenshot(path="output/debug_step3.png", full_page=True)
|
| 339 |
+
with open("output/debug_step3.html", "w", encoding="utf-8") as f:
|
| 340 |
+
f.write(page.html or "")
|
| 341 |
print(f"[T{tid}] Step 3 URL: {page.url}")
|
| 342 |
except Exception:
|
| 343 |
pass
|
| 344 |
|
| 345 |
+
# --- Step 3: Birth date (new Fluent UI combines country + DOB, no name step) ---
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 346 |
year = random.randint(1975, 2000)
|
| 347 |
month = random.randint(1, 12)
|
| 348 |
day = random.randint(1, 28)
|
| 349 |
# New Fluent UI uses select dropdowns or input fields with name attributes
|
| 350 |
page.run_js(f"""
|
| 351 |
+
(function() {{
|
| 352 |
+
function setSelect(sel, val) {{
|
| 353 |
+
var el = document.querySelector(sel);
|
| 354 |
+
if (el) {{
|
| 355 |
+
el.value = String(val);
|
| 356 |
+
el.dispatchEvent(new Event('change', {{bubbles: true}}));
|
| 357 |
+
el.dispatchEvent(new Event('input', {{bubbles: true}}));
|
| 358 |
+
}}
|
| 359 |
}}
|
| 360 |
+
setSelect('#BirthMonth, select[name="BirthMonth"]', '{month}');
|
| 361 |
+
setSelect('#BirthDay, select[name="BirthDay"]', '{day}');
|
| 362 |
+
setSelect('#BirthYear, select[name="BirthYear"]', '{year}');
|
| 363 |
+
var yearInput = document.querySelector('input[name="BirthYear"]');
|
| 364 |
+
if (yearInput) {{
|
| 365 |
+
var setter = Object.getOwnPropertyDescriptor(window.HTMLInputElement.prototype, 'value').set;
|
| 366 |
+
setter.call(yearInput, '{year}');
|
| 367 |
+
yearInput.dispatchEvent(new Event('input', {{bubbles: true}}));
|
| 368 |
+
yearInput.dispatchEvent(new Event('change', {{bubbles: true}}));
|
| 369 |
+
}}
|
| 370 |
+
}})();
|
|
|
|
|
|
|
|
|
|
| 371 |
""")
|
| 372 |
time.sleep(0.5)
|
| 373 |
_click_next()
|