如何使用undetected_chromedriver和token参数?

0 投票
1 回答
31 浏览
提问于 2025-04-14 17:35

有没有人知道我怎么能把一个带有令牌的参数传递给Python的undetected_chromedriver(v3.5.5)模块的Chrome功能,以便在进行GET请求时使用?谢谢大家!

我试过这个,但没成功:

def init_webdriver(headless=False, token=None):
    options = uc.ChromeOptions()
    user_agent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 Chrome/122.0.0.0"
    options.add_argument(f"user-agent={user_agent}")
    options.add_argument(f"authorization={token}")
   
    driver = uc.Chrome(headless=headless,options=options)
    return driver

1 个回答

-1

你可以使用add_argument这个方法把令牌(token)添加到请求的头部,具体是放在Authorization这个头里。不过,add_argument这个方法其实是把参数加到Chrome的命令行上,而不是HTTP请求的头部。

如果你想把令牌加到请求的头部,可以用add_experimental_option这个方法来设置ChromeOptions对象的头部选项。下面是一个例子:

import undetected_chromedriver as uc

def init_webdriver(headless=False, token=None): options = uc.ChromeOptions() user_agent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 Chrome/122.0.0.0" options.add_argument(f"user-agent={user_agent}")

headers = {}
if token:
    headers["Authorization"] = token
    options.add_experimental_option("headers", headers)

driver = uc.Chrome(headless=headless, options=options)
return driver

在这个例子中,headers这个字典是在if语句外面创建的,这样可以根据token参数的值进行修改。如果token参数不是None,就会把Authorization这个头加到headers字典里。然后,headers字典通过headers这个键传给add_experimental_option方法。这样就为Chrome浏览器实例发出的所有HTTP请求设置了头部。

需要注意的是,undetected_chromedriver模块是selenium模块的一个封装,所以add_experimental_option这个方法是从selenium.webdriver.chrome.options.Options继承过来的。

撰写回答