below is my parser code. it return `INFO:backoff:Backing off navigate_to_url(...) for 0.7s (playwright._impl._errors.Error: Page.goto: net::ERR_HTTP_RESPONSE_CODE_FAILURE at https://scholar.google.com/scholar?q=sadness&hl=en&gl=us&start=0` error. pls check it:

# username, password, and proxy_servers list is before this script

def get_next_proxy():
    for proxy in proxy_servers:
        yield {
            'server': f'http://{proxy["ip"]}:{proxy["port"]}',
            'username': proxy['username'],
            'password': proxy['password'],
        }

# Proxy generator function (as defined above)
proxy_generator = get_next_proxy()



@sleep_and_retry
@limits(calls=5, period=60)
async def call_with_rate_limit_async(func, *args, **kwargs):
    return await func(*args, **kwargs)

async def perform_stealth(page):
    # Simulate random mouse movements
    for _ in range(random.randint(3, 7)):
        x, y = random.randint(0, 1920), random.randint(0, 1080)
        await page.mouse.move(x, y, steps=random.randint(5, 20))
        await asyncio.sleep(random.uniform(0.1, 0.5))
    
    # Simulate clicks on random elements
    elements = await page.locator('a').element_handles()  # Change to use locator
    if elements:
        random_element = random.choice(elements)
        await random_element.click()
        await asyncio.sleep(random.uniform(1, 3))
    
    # Simulate scrolling
    await page.evaluate("window.scrollBy(0, window.innerHeight);")
    await asyncio.sleep(random.uniform(1, 3))

@backoff.on_exception(backoff.expo, Exception, max_tries=5)
async def navigate_to_url(page, url):
    await page.goto(url, timeout=60000)

async def main():
    async with async_playwright() as p:
        browser = await p.chromium.launch(headless=False)
        for _ in range(5):
            try:
                proxy = next(proxy_generator)
                user_agent = random.choice(user_agents)
                
                context = await browser.new_context(
                    proxy=proxy,
                    user_agent=user_agent,
                    viewport={"width": 1366, "height": 768},
                    locale="en-US",
                    timezone_id="America/New_York",
                    permissions=["geolocation"],
                    geolocation={"latitude": 40.7128, "longitude": -74.0060}
                )
                
                # Request interception
                await context.set_extra_http_headers({
                    'Accept-Encoding': 'gzip, deflate, br',
                    'Connection': 'keep-alive',
                    'Cache-Control': 'no-cache',
                    'Upgrade-Insecure-Requests': '1',
                    'DNT': '1',
                    'Accept-Language': 'en-US,en;q=0.9'
                })
                
                # Add init script for navigator spoofing
                await context.add_init_script("""
                    // JavaScript for navigator spoofing
                    Object.defineProperty(navigator, 'webdriver', { value: undefined });
                    Object.defineProperty(navigator, 'plugins', { get: () => [1, 2, 3] });
                    Object.defineProperty(navigator, 'languages', { get: () => ['en-US', 'en'] });
                    Object.defineProperty(navigator, 'platform', { get: () => 'Win32' });
                    Object.defineProperty(navigator, 'vendor', { get: () => 'Google Inc.' });
                    Object.defineProperty(navigator, 'javaEnabled', { value: () => false });
                """)
                
                # Open a new page
                page = await context.new_page()
                
                # Enable request interception
                await page.route('**', lambda route: route.continue_())
                
                # Perform stealth tweaks
                await perform_stealth(page)
                
                query = 'sadness'
                url_scholar = f'https://scholar.google.com/scholar?q={query}&hl=en&gl=us&start=0'
                
                logging.info(f"Using proxy: {proxy['server']}, user-agent: {user_agent}")
                
                # Navigate to the URL with retry logic
                response = await navigate_to_url(page, url_scholar)
                if response.status != 200:
                    logging.error(f"Non-200 response: {response.status}")
                    raise Exception("response error")
                
                # Scrape content
                html = await page.content()
                logging.info(html[:500])
                
                await context.close()
                time.sleep(random.randint(5, 15))
            
            except Exception as e:
                logging.error(f"Error: {e}, retrying...")
                continue
        
        await browser.close()

asyncio.run(main())