亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用請求發布方法登錄網站

使用請求發布方法登錄網站

HUWWW 2021-06-25 14:46:57
我正在嘗試登錄此網站:https : //www.blackrock.com/userplatform/signOn我正在使用以下腳本來執行此操作:import requestsfrom bs4 import BeautifulSoupheaders = {    'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.12; rv:55.0) Gecko/20100101 Firefox/55.0'}resp = requests.get('https://www.ishares.com/us/sign-on.saml', headers=headers)soup_object =  BeautifulSoup(resp.text, 'html.parser')csrf = soup_object.select_one('meta[name="_csrf"]').get('content')login_data = dict(userName='USERNAME', password='PASSWORD', csrfmiddlewaretoken=csrf)r = requests.post('https://www.blackrock.com/userplatform/signOn', data=login_data, headers={"Referer": "https://www.blackrock.com"})但是,當我在郵遞員中運行腳本時,它給了我禁止的 403 錯誤消息。有人可以建議我做錯了什么嗎?該站點甚至共享了一個腳本,用于登錄其門戶并下載一些文件。但是它是用perl寫的。共享該腳本以供參考。但我想用python來做。use strict;use File::Basename;use Getopt::Long;use WWW::Mechanize;use URI qw( );my $thisScript = basename($0);print "==START $thisScript==\n";my ($help, $proxy, $username, $password);my $urlsToBeDownloaded = "file-url-list.txt";my $url = "https://www.ishares.com/us/sign-on.saml";usage() if (@ARGV < 2 or ! GetOptions('proxy:s' => \$proxy,                                       'username=s' => \$username,                                       'password=s' => \$password)                         or defined $help);if ($username eq "" || $password eq "") {        usage();}my $mech = WWW::Mechanize->new();if($proxy ne ""){    $mech->proxy(['http', 'https'], $proxy);    }$mech->get($url);$mech->submit();my $ctoken = $mech->field('ctoken');$mech->get($mech->uri());$mech->submit_form(        form_number => 1,        fields    => {                        userName => $username,                        password  => $password,                        ctoken  => $ctoken                     });
查看完整描述

2 回答

?
吃雞游戲

TA貢獻1829條經驗 獲得超7個贊

它看起來像第三關鍵是_csrf而不是csrfmiddlewaretoken在login_data變量:

= >

login_data = dict(userName='USERNAME', password='PASSWORD', _csrf=csrf)


查看完整回答
反對 回復 2021-06-29
?
明月笑刀無情

TA貢獻1828條經驗 獲得超4個贊

首先嘗試使用 requests.session 它將自動存儲和更新所有 cookie 和標頭,因此您不必在每個請求中添加它們。


在 perl 腳本中的第二個我可以看到它們是 srt ctoken,我猜這是 csrf 令牌。所以你的帖子數據應該是這樣的:


{

“userName”: “your username”,

“password”: “your password”,

“ctoken”: “the csrf token”

}

另外不要忘記在每次請求后更新 csrf 令牌。


查看完整回答
反對 回復 2021-06-29
  • 2 回答
  • 0 關注
  • 177 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號