Kameleo Automation创建配置文件时如何获取随机唯一Chrome版本
问题原因
你当前代码固定取base_profiles列表的首个元素作为配置模板,Kameleo返回的base_profiles列表中每个元素对应不同的Chrome版本、操作系统等指纹参数,固定选取首个元素自然每次生成的配置Chrome版本都一致。
实现随机/唯一Chrome版本的方案
基础版:每次生成随机Chrome版本
只需导入random标准库,将固定取base_profiles[0]的逻辑改为从列表中随机选取元素即可:
import random from kameleo.local_api_client.kameleo_local_api_client import KameleoLocalApiClient from kameleo.local_api_client.builder_for_create_profile import BuilderForCreateProfile client = KameleoLocalApiClient() base_profiles = client.search_base_profiles( device_type='desktop', browser_product='chrome' ) # 随机选一个基础配置,对应不同的Chrome版本 random_base_profile = random.choice(base_profiles) create_profile_request = BuilderForCreateProfile \ .for_base_profile(random_base_profile.id) \ .set_recommended_defaults() \ .build() profile = client.create_profile(body=create_profile_request) client.start_profile(profile.id)
进阶版:保证每次生成的Chrome版本唯一不重复
如果需要多次生成配置时版本完全不重复,可以维护一个已使用的基础配置ID列表,每次选择前过滤掉已经使用过的配置即可:
import random from kameleo.local_api_client.kameleo_local_api_client import KameleoLocalApiClient from kameleo.local_api_client.builder_for_create_profile import BuilderForCreateProfile # 全局维护已使用的基础配置ID used_base_profile_ids = set() client = KameleoLocalApiClient() base_profiles = client.search_base_profiles( device_type='desktop', browser_product='chrome' ) # 过滤出未使用的基础配置 available_profiles = [p for p in base_profiles if p.id not in used_base_profile_ids] if not available_profiles: # 所有版本都用完时可以自行处理,比如清空已用列表重新使用 used_base_profile_ids.clear() available_profiles = base_profiles # 随机选取未使用的配置 random_base_profile = random.choice(available_profiles) used_base_profile_ids.add(random_base_profile.id) create_profile_request = BuilderForCreateProfile \ .for_base_profile(random_base_profile.id) \ .set_recommended_defaults() \ .build() profile = client.create_profile(body=create_profile_request) client.start_profile(profile.id)
内容的提问来源于stack exchange,提问作者Tomi
相关产品推荐
相关产品推荐

