如何绕过Target网站反爬,解决循环访问URL自动加?Nao=0后缀问题
问题解决方法
根本原因
你遇到的跳转问题首先源于URL格式不符合HTTP规范:标准URL中,第一个查询参数需要以?开头,后续参数才用&分隔。你当前的分页URL中Nao参数前用了&,网站无法识别你携带的分页参数,就会自动追加?Nao=0跳回第一页的父页面。
其次Target站点有严格的反爬机制,会检测自动化访问特征、会话状态,也会强制异常访问的会话跳回首页。
可直接落地的解决方案
第一步:修正URL格式
把你所有分页URL中的&Nao=替换为?Nao=,修改后的示例如下:
links_products = ['https://www.target.com/c/grocery-deals/-/N-5xt0rZ55e6uZ55e69Z55e6tZ5tdv0r?Nao=24', 'https://www.target.com/c/grocery-deals/-/N-5xt0rZ55e6uZ55e69Z55e6tZ5tdv0r?Nao=48', 'https://www.target.com/c/grocery-deals/-/N-5xt0rZ55e6uZ55e69Z55e6tZ5tdv0r?Nao=72']
90%以上的场景修改URL后即可正常抓取分页内容。
第二步:适配反爬规则(修改URL后仍有问题时使用)
调整浏览器启动配置,隐藏自动化特征、清除会话痕迹:
from selenium import webdriver from selenium.webdriver.chrome.options import Options import time import random chrome_options = Options() # 开启无痕模式 chrome_options.add_argument("--incognito") # 隐藏自动化特征 chrome_options.add_argument('--disable-blink-features=AutomationControlled') chrome_options.add_experimental_option("excludeSwitches", ["enable-automation"]) chrome_options.add_experimental_option('useAutomationExtension', False) driver = webdriver.Chrome('/home/chromedriver', options=chrome_options) # 移除webdriver标识 driver.execute_cdp_cmd('Page.addScriptToEvaluateOnNewDocument', { 'source': 'Object.defineProperty(navigator, "webdriver", {get: () => undefined})' }) for url in links_products: # 每次请求前清除所有cookie和存储,避免会话状态干扰 driver.delete_all_cookies() driver.execute_script('window.localStorage.clear(); window.sessionStorage.clear();') # 跳转页面 driver.get(url) # 随机等待3-7秒,模拟用户行为 time.sleep(random.randint(3,7)) # 这里写你抓取页面内容的逻辑 print(driver.current_url)
备选方案:直接通过JS跳转分页
如果上述方法仍不生效,不要用driver.get跳转,改用JS修改地址栏的方式跳转:
# 把循环内的driver.get(url)替换为以下代码 driver.execute_script(f'window.location.href = "{url}";') time.sleep(random.randint(3,7))
内容的提问来源于stack exchange,提问作者MM Roller
相关产品推荐
相关产品推荐

