Я создаю автоматизированную систему подачи заявок на работу. Когда пользователь нажимает «Автоматически подать заявку» в списке вакансий Adzuna, моему серверу необходимо пройти по цепочке перенаправления к фактической форме заявления работодателя и заполнить ее автоматически.
Списки вакансий Adzuna следуют этой цепочке перенаправлений:
Код: Выделить всё
https://www.adzuna.com.au/details/{id} ← job listing (loads fine)
→ https://www.adzuna.com.au/land/ad/{id} ← tracking redirect (BOT BLOCKED)
→ https://click.appcast.io/t/{token} ← appcast tracking
→ https://hatch.team/job/{slug} ← employer platform
→ https://jobs.ashbyhq.com/{company}/{id}/application ← actual form
- Переход на страницу сведений об Adzuna с помощью Playwright — работает нормально.
- Извлечение URL-адреса земли/объявления/ из кнопки «Применить» — работает нормально.
- Прослеживание всей цепочки с помощью Firecrawl (скрытно). proxy) — корректно преобразуется в окончательный URL-адрес Ashby ATS
Код: Выделить всё
Access Denied
[*]
- Playwright .goto(land_url) — «Доступ запрещен» (200 ОК, бот обнаружен)
- с заголовками в стиле браузера:[/b]
Код: Выделить всё
httpx
Код: Выделить всё
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36...",
"Accept": "text/html,application/xhtml+xml,...",
"Accept-Language": "en-AU,en;q=0.9",
"Referer": "https://www.adzuna.com.au/",
}
async with httpx.AsyncClient(headers=headers, follow_redirects=True) as client:
r = await client.get(land_url)
# r.url is still adzuna.com/land/ad/... — "Access Denied"
- httpx с файлами cookie сеанса Playwright + правильным реферером (страница сведений была загружена Playwright, поэтому на ней имеются действительные файлы cookie сеанса):
Код: Выделить всё
pw_cookies = await page.context.cookies()
session_cookies = {c["name"]: c["value"] for c in pw_cookies if "adzuna" in c["domain"]}
# Still "Access Denied"
- Антиобнаружение в контексте драматурга:
Код: Выделить всё
browser = await pw.chromium.launch(args=[
"--disable-blink-features=AutomationControlled",
])
context = await browser.new_context(user_agent="...", locale="en-AU")
await context.add_init_script("Object.defineProperty(navigator,'webdriver',{get:()=>undefined})")
# Details page still loads fine, but land/ad/ still blocks
Как мне разрешить перенаправление Adzuna Land/ad/ программным путем без использования человеческого браузера? В частности:
- Поможет ли этот отпечаток TLS (JA3/JA4) — Curl_cffi с impersonate="chrome124"?
- Есть ли другой способ получить конечный URL-адрес работодателя со страницы сведений HTML/API Adzuna, вообще не проходя через Land/ad/?
- Кто-нибудь знает, раскрывает ли Adzuna целевой URL-адрес где-либо (JSON-LD, атрибуты данных, ответ XHR) на странице сведений?
Мобильная версия