我正在尝试使用 Mechanize 从(Google)网络服务中检索数据。
如果用户没有2FA(双因素身份验证),则此代码有效:
#!/usr/bin/perl
my $email = 'xxxxx';
my $pass = 'xxxxx';
use WWW::Mechanize;
my $time1 = (time - 24 * 60 * 60) * 1000;
my $time2 = (time + 24 * 60 * 60) * 1000;
my $mech = WWW::Mechanize->new();
$mech->get("https://maps.google.com/locationhistory/b/0/kml?startTime=$time1&endTime=$time2");
$mech->submit_form(fields => { 'Email' => $email, 'Passwd' => $pass, }, );
$mech->content =~ m!.*<gx:coord>(.*?)</gx:coord>!s;
my $coord = $1;
my($lng, $lat) = ($coord =~ /^([-+]?[\d\.]+)[ ,]+([-+]?[\d\.]+)/);
如果用户打开了 2FA,则在提交密码后,页面会要求输入 2FA 代码。我有一个生成代码的令牌 - 但我不确定如何提交它。
(注意,我尝试过使用特定于应用程序的密码- 但它们不适用于此类访问。)
- 如何在第二页提交 2FA 代码?
- 有什么办法可以存储 cookie,这样我就不必每次都使用 2FA 令牌?