允许 facebook cookie 在 selenium 中的多个会话中跟踪我

发布于 2025-01-11 01:18:35 字数 633 浏览 0 评论 0原文

我正在使用 selenium 来抓取数据,进行一项学术研究,该研究将测试 Facebook 和网络上的某些用户行为将如何影响他们看到的广告。

为此,我需要有一种假用户,它首先与 facebook 交互,然后访问一些带有 facebook cookie 的网站,允许 facebook 继续跟踪其行为,然后返回 facebook。

我没有做过太多的 Web 开发,而且我似乎对如何在这种情况下准确保留和加载 cookie 感到困惑。

我一直在尝试使用以下代码片段保存和加载烹饪:

# saving
pickle.dump(driver.get_cookies(), cookiesfile)

# loading
cookies = pickle.load(cookiesfile)
for cookie in cookies:
    driver.add_cookie(cookie)

在 facebook 上,这将创建一个错误消息弹出窗口,告诉我重新加载,或者将我重定向到登录页面。在其他网站上,即使明确声明他们有 Facebook 跟踪器,这也会导致 InvalidCookieDomainException

我做错了什么?

I'm working on scraping data using selenium, for an academic research which will test how certain user behaviors across facebook and the web will affect the ads they see.

For this, I need to have a kinds of fake user which will first interact with facebook, then visit some sites with facebook cookies, allowing facebook to continue tracking its behavior, and then go back to facebook.

I haven't done much web development, and it seems I'm confused about how exactly to keep and load cookies for this scenario.

I've been trying to save and load cooking using the following code snippets:

# saving
pickle.dump(driver.get_cookies(), cookiesfile)

# loading
cookies = pickle.load(cookiesfile)
for cookie in cookies:
    driver.add_cookie(cookie)

On facebook , this will either create an error message popup telling me to reload, or redirect me to the login page. On other sites, even ones that explicitly state they have facebook trackers, this will cause an InvalidCookieDomainException.

What am I doing wrong?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

谎言月老 2025-01-18 01:18:35

我建议您使用 ChromeOptions 来保留浏览器会话,而不是自己处理 Cookie。这对于维护本地存储和其他 cookie 可能更有帮助。

下次打开浏览器会话时,chrome 实例将加载之前的“配置文件”并继续维护它。

options = webdriver.ChromeOptions()
options.add_argument('user-data-dir={}'.format(<path_to_a_folder_reserved_for_browser_data>))

driver = webdriver.Chrome(executable_path=<chromedriver_exe_path>, options=options)

Instead of handling cookies yourself, I would recommend using ChromeOptions to persist a browser session. This could be more helpful in maintaining local storage and other cookies.

The next time you open a browser session, the chrome instance will have loaded the previous "profile" and will continue maintaining it.

options = webdriver.ChromeOptions()
options.add_argument('user-data-dir={}'.format(<path_to_a_folder_reserved_for_browser_data>))

driver = webdriver.Chrome(executable_path=<chromedriver_exe_path>, options=options)
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文