Я создаю автоматизированную систему подачи заявок на работу. Когда пользователь нажимает «Автоматически подать заявку» в списке вакансий Adzuna, мой сервер должен пройти по цепочке перенаправления к фактической форме заявления работодателя и заполнить ее автоматически.
Списки вакансий Adzuna следуют этой цепочке перенаправлений:
Переход на страницу сведений об Adzuna с помощью Playwright — работает нормально
Извлечение URL-адреса земли/рекламы/ из кнопки «Применить» — работает отлично
Прослеживание всей цепочки с помощью Firecrawl (скрытый прокси) — правильно разрешается до конечного URL-адреса Ashby ATS.
Что не получается: каждый метод, который я пытаюсь разрешить, Land/ad/ возвращает страницу «Доступ запрещен», обслуживаемую самой Adzuna (а не Cloudflare — это страница с ошибкой Adzuna):
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"
Я создаю автоматизированную систему подачи заявок на работу. Когда пользователь нажимает «Автоматически подать заявку» в списке вакансий Adzuna, мой сервер должен пройти по цепочке перенаправления к фактической форме заявления работодателя и заполнить ее автоматически. Списки вакансий Adzuna следуют этой цепочке перенаправлений: [list] [*]https://www.adzuna.com.au/details/{id} ← список вакансий (загружается нормально) [*]→ https://www.adzuna.com.au/land/ad/{id} ← перенаправление отслеживания (БОТ ЗАБЛОКИРОВАН) [*]→ https://click.appcast.io/t/{token} ← отслеживание appcast [*]→ https://hatch.team/job/{slug} ← Платформа работодателя [*]→ https://jobs.ashbyhq.com/{company}/{id}/application ← фактическая форма [/list] Что работает: [list] [*]Переход на страницу сведений об Adzuna с помощью Playwright — работает нормально
[*]Извлечение URL-адреса земли/рекламы/ из кнопки «Применить» — работает отлично
[*]Прослеживание всей цепочки с помощью Firecrawl (скрытый прокси) — правильно разрешается до конечного URL-адреса Ashby ATS.
[/list] Что не получается: каждый метод, который я пытаюсь разрешить, Land/ad/ возвращает страницу «Доступ запрещен», обслуживаемую самой Adzuna (а не Cloudflare — это страница с ошибкой Adzuna): [code]Access Denied [*] [/code] Попытки на данный момент: [list] [b]Драматург .goto(land_url)[/b] — «Доступ запрещен» (200 ОК, бот обнаружен)
[*][b][code]httpx[/code] с заголовками в стиле браузера:[/b] [code]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" [/code]
[*][b]httpx с файлами cookie сеанса Playwright + правильным реферером[/b] (страница сведений была загружена Playwright, поэтому на ней имеются действительные файлы cookie сеанса): [code]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" [/code]
[*][b]Антиобнаружение в контексте драматурга:[/b] [code]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 [/code]
[/list] Как мне разрешить перенаправление Adzuna Land/ad/ программным способом без использования человеческого браузера? В частности: [list] [*]Поможет ли этот отпечаток TLS (JA3/JA4) — Curl_cffi с impersonate="chrome124"?
[*]Есть ли другой способ получить конечный URL-адрес работодателя со страницы сведений HTML/API Adzuna, вообще не проходя через Land/ad/?
[*]Кто-нибудь знает, раскрывает ли Adzuna целевой URL-адрес где-либо (JSON-LD, атрибуты данных, ответ XHR) на странице сведений?
[/list] Среда: Python 3.11, Playwright 1.44, httpx 0.27, работает без заголовка на Windows Server/локальной разработке.