如何在 Owler 等网站的自动化中保留登录令牌?

aka*_*edi 1 python selenium scrapy web-scraping

我正在尝试为诸如angel.co 之类的各种网站开发一个抓取工具。我一直在为www.owler.com网站设计爬虫,因为当我们尝试访问有关公司的信息时,它需要通过邮件登录。

每次我们登录时,我们都会在电子邮件中获得一个新的登录令牌,该令牌将在一段时间后过期。那么,是否有任何适当的解决方案可以使用带有 Py 绑定的 Selenium 在浏览器会话中保留登录会话?

我只是在寻找处理此类情况的指南。已经尝试使用 Selenium 自动执行此任务,但这不是一种富有成效的方法。

iam*_*hiv 5

我抓到你了!是的,这可以通过 Selenium 完成,但这需要一些 Selenium 的高级知识以及对用户如何访问authenticated网站的基本了解cookies

在我的脑海中,您有以下选择:

  • 1.存储电子邮件接收的身份验证链接并将其中的令牌以 的形式注入您的浏览器会话中cookie
  • 2.Profile特定于您正在运行测试的浏览器的 Selenium 形式存储您的会话,然后将其加载到由您的脚本生成的实例上。

1.注意:这从第一次开始就很有魅力,所以请密切关注。)

  • 在隐身窗口中打开www.owler.com(我使用的是 Chrome)并打开 cookie 部分;
  • 发现您正在使用的 cookie(请参阅打印屏幕);
  • Sign In以便接收您的电子邮件。检查登录链接(请参阅打印屏幕);
  • 复制链接并将其加载到另一个浏览器(不是您的隐身会话);
  • 登录后,打开browser console( F12,或CTRL+Shift+J在 Chrome 上) > 转到Applications选项卡 > 单击Cookies部分(对于 Owler 域)并复制OWLER_PCcookie的值。(有关更多详细信息,请参阅打印屏幕)
  • 在您的匿名会话(未登录),进入到浏览器控制台,并添加auth_token一个cookie的形式,通过document.cookie功能,像这样:document.cookie=OWLER_PC=<yourTokenHere>;
  • 刷新页面2 次,您已登录。

注意:我知道您必须将该 cookie 添加为OWLER_PC,因为我已经检查了登录会话,这是唯一一个新的 cookie。cookie 的值(通常)与您通过电子邮件收到的身份验证令牌相同。

现在剩下要做的就是通过代码模拟这一点。您必须在脚本中存储这些电子邮件身份验证令牌之一(请注意,它们会在 1 年后过期,所以您应该没问题)。

然后一旦你打开你的会话,使用你用来添加所述 cookie 的框架/语言的 Selenium 绑定,然后刷新页面。对于WedriverIO / JavaScript(我选择的武器),它是这样的:

browser.setCookie({name: 'OWLER_PC', value: 'SPF-yNNJSXeXJ...'});
browser.refresh();
browser.refresh();
// Assert you are logged in 
Run Code Online (Sandbox Code Playgroud)

2.有时,您不想添加 cookie,或者编写样板代码来登录网站,或者在 Selenium 驱动程序实例上加载一组特定的浏览器扩展。所以你使用浏览器配置文件

你必须记录自己,因为这是一个冗长的话题。当您使用 Python Selenium 绑定时,这个问题也可能对您有所帮助。

希望这可以帮助!