如何使用undetected_chromedriver和token参数?
有没有人知道我怎么能把一个带有令牌的参数传递给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 个回答
你可以使用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继承过来的。