gpt4 book ai didi

Python:使用urllib登录网站

转载 作者:太空狗 更新时间:2023-10-29 20:21:33 25 4
gpt4 key购买 nike

我要登录这个网站:https://www.fitbit.com/login这是我使用的代码:

import urllib2
import urllib
import cookielib

login_url = 'https://www.fitbit.com/login'
acc_pwd = {'login':'Log In','email':'username','password':'pwd'}
cj = cookielib.CookieJar() ## add cookies
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
opener.addheaders = [('User-agent','Mozilla/5.0 \
(compatible; MSIE 6.0; Windows NT 5.1)')]
data = urllib.urlencode(acc_pwd)
try:
opener.open(login_url,data,10)
print 'log in - success!'
except:
print 'log in - times out!', login_url

我使用 chrome 检查输入框的元素,我尝试了很多 key 对,但没有一个有效。谁能帮我看看这个网站?我在变量 acc_pwd 中显示的正确数据是什么?

非常感谢

最佳答案

您忘记了表单的隐藏字段:

<form id="loginForm" class="validate-enabled failure form" method="post" action="https://www.fitbit.com/login" name="login">
<input type="hidden" value="Log In" name="login">
<input type="hidden" value="" name="includeWorkflow">
<input id="loginRedirect" type="hidden" value="" name="redirect">
<input id="disableThirdPartyLogin" type="hidden" value="false" name="disableThirdPartyLogin">
<input class="field email" type="text" tabindex="23" name="email" placeholder="E-mail">
<input class="field password" type="password" tabindex="24" name="password" placeholder="Mot de passe">
</form>

所以你可能想要更新:

acc_pwd = {'login':'Log In',
'email':'username',
'password':'pwd',
'disableThirdPartyLogin':'false',
'loginRedirect':'',
'includeWorkflow':'',
'login':'Log In'
}

这可能会被他们的服务检查。虽然,给定字段 disableThirdPartyLogin 的名称,我想知道是否没有脏 javascript 绑定(bind)到表单的提交操作,该操作实际上在实际执行 POST 之前添加了一个值。您可能需要使用开发人员工具和分析的 POST 值来检查这一点。

测试看起来没有,尽管 javascript 添加了一些值,这些值可能来自 cookie:

__fp    w686jv_O1ZZztQ7FkK21Ry2MI7JbqWTf
_sourcePage tJvTQfA5dkvGrJMFkFsv6XbX0f6OV1Ndj1zeGcz7OKzA3gkNXMXGnj27D-H9WXS-
disableThirdPartyLogin false
email foo@example.org
includeWorkflow
login Log In
password aeou
redirect

这是我对使用 requests 执行此操作的看法(它具有比 urllib 更好的 API ;-) )

>>> import requests
>>> import cookielib
>>> jar = cookielib.CookieJar()
>>> login_url = 'https://www.fitbit.com/login'
>>> acc_pwd = {'login':'Log In',
... 'email':'username',
... 'password':'pwd',
... 'disableThirdPartyLogin':'false',
... 'loginRedirect':'',
... 'includeWorkflow':'',
... 'login':'Log In'
... }
>>> r = requests.get(login_url, cookies=jar)
>>> r = requests.post(login_url, cookies=jar, data=acc_pwd)

并且不要忘记首先使用 get 进入登录页面以填充您的 cookie jar !

最后,我无法为您提供更多帮助,因为我在 fitbit.com 上没有有效账户,而且我不需要/不需要。所以我只能进入登录失败页面进行测试。

编辑:

解析输出,然后你可以使用:

>>> from lxml import etree
>>> p = etree.HTML(r.text)

例如获取错误信息:

>>> p.xpath('//ul[@class="errorList"]/li/text()')
['Lutilisateur nexiste pas ou le mot de passe est incorrect.']

资源:

他们都在 pypi 上:

pip install lxml requests

HTH

关于Python:使用urllib登录网站,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23639538/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com