我被告知要对我们面向前方的网站进行cookie审核,现在我们拥有很多域名,所以我真的不会手动挖掘每个提取cookie的人。我决定服用硒。这可以直到我想要抓住第三方cookie。
目前(python)我可以做到
driver.get_cookies()
对于从我的域名设置的所有Cookie,但这不会给我任何Google,Twitter,Vimeo或其他第三方Cookie
我尝试修改firefox驱动程序中的cookie权限,但它没有帮助。任何人都知道如何掌握tehm
答案 0 :(得分:2)
Selenium只能获取当前域的cookie:
java.util.Set getCookies()
获取当前域的所有Cookie。这相当于 调用“document.cookie”并解析结果
无论如何,我听说有人使用了一个能够以XML格式保存所有cookie的Firefox插件。据我所知,这是你最好的选择。
答案 1 :(得分:2)
您的问题已在StackOverflow here
上得到解答第1步:您需要从here下载并安装Firefox的“获取所有Cookie in XML”扩展程序(请不要忘记在安装扩展程序后重新启动Firefox)。< / p>
Step2:执行此python代码,让Selenium的FirefoxWebDriver将所有cookie保存到xml文件,然后读取此文件:
from xml.dom import minidom
from selenium import webdriver
import os
import time
def determine_default_profile_dir():
"""
Returns path of Firefox's default profile directory
@return: directory_path
"""
appdata_location = os.getenv('APPDATA')
profiles_path = appdata_location + "/Mozilla/Firefox/Profiles/"
dirs_files_list = os.listdir(profiles_path)
default_profile_dir = ""
for item_name in dirs_files_list:
if item_name.endswith(".default"):
default_profile_dir = profiles_path + item_name
if not default_profile_dir:
assert ("did not find Firefox default profile directory")
return default_profile_dir
#load firefox with the default profile, so that the "Get All Cookies in XML" addon is enabled
default_firefox_profile = webdriver.FirefoxProfile(determine_default_profile_dir())
driver = webdriver.Firefox(default_firefox_profile)
#trigger Firefox to save value of all cookies into an xml file in Firefox profile directory
driver.get("chrome://getallcookies/content/getAllCookies.xul")
#wait for a bit to give Firefox time to write all the cookies to the file
time.sleep(40)
#cookies file will not be saved into directory with default profile, but into a temp directory.
current_profile_dir = driver.profile.profile_dir
cookie_file_path = current_profile_dir+"/cookie.xml"
print "Reading cookie data from cookie file: "+cookie_file_path
#load cookies file and do what you need with it
cookie_file = open(cookie_file_path,'r')
xmldoc = minidom.parse(cookie_file)
cookie_file.close()
driver.close()
#process all cookies in xmldoc object
答案 2 :(得分:0)
是的,我不相信Selenium允许您与当前域以外的Cookie进行互动。
如果您知道有问题的域名,那么您可以导航到该域名,但我认为这不太可能。
如果您可以跨站点访问Cookie,那将是一个巨大的安全风险
答案 3 :(得分:-1)
您可以从配置文件文件夹中的浏览器sqlite数据库文件中获取任何cookie。 我在这里添加了更完整的答案: Selenium 2 get all cookies on domain