使用Python登录到带有令牌的安全网站

2024-09-28 19:06:55 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试使用Python脚本登录我的银行帐户,以进一步取消我所做的交易。我读了很多这方面的东西,似乎并不复杂,但我没有成功登录。我认为问题是,当我发布表单时,我错过了一个由??我不知道怎么找回它。在

下面是我的示例代码:

import requests

s = requests.Session()
s.headers.update({
    'User-agent': "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.80 Safari/537.36",
})

url_identification = 'https://accweb.mouv.desjardins.com/identifiantunique/identification'
url_identification_process = 'https://accweb.mouv.desjardins.com/identifiantunique/identification/identificationProcess'

login_data = {
    'fnMemoriserUtilisateurActive': '0',
    'InfoPosteRaa': {},
    'OtherIdRaa': {},
    'nbrCartesMemorisees':1,
    'codeUtilisateur':xxxxxxxxxx,
    'description':{},
    '_tk':{},
    'infoPosteClient':{}
}    

r = s.get(url_identification)
r = s.post(url_identification_process, data=login_data)
print r.text

我的帖子将我重定向到url_identification网页,因为我没有合适的令牌。你知道我怎么找回它吗?我不知道它是怎么产生的,而且它是一个银行网站,恐怕不可能:


Tags: https脚本comurldatalogin交易requests
1条回答
网友
1楼 · 发布于 2024-09-28 19:06:55

首先回答你的问题:

  1. _tk的值可以在得到url_identification的响应中找到,例如

    <input type="hidden" name="_tk" value="86167503-a1e1-4fdf-a661-47348671df9d" />
    
  2. infoPosteClientJavaScript函数add_deviceprint计算。您可能需要尝试模拟特定的行为,或者只是给它一个常量值。

  3. {{{cd7}中的其他参数可以是空的。

我没有那家银行的账户可供测试,因此我恐怕无法查询进一步的请求。
一条建议:我确实认为Python能够执行这个任务,事实上我个人也做了很多类似的事情(使用Python模拟XHR或其他复杂的事情)。但我想使用基于JavaScript的解决方案(例如PhantomJS)可能更适合您的具体情况。在

相关问题 更多 >