Cậu quên các lĩnh vực tiềm ẩn có dạng:
<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>
vì vậy bạn có thể muốn cập nhật:
acc_pwd = {'login':'Log In',
'email':'username',
'password':'pwd',
'disableThirdPartyLogin':'false',
'loginRedirect':'',
'includeWorkflow':'',
'login':'Log In'
}
mà có thể được kiểm tra bởi họ dịch vụ. Mặc dù, với tên của trường disableThirdPartyLogin
, tôi tự hỏi nếu không có javascript bẩn ràng buộc với hành động gửi biểu mẫu thực sự thêm một giá trị trước khi thực sự làm POST. Bạn có thể muốn kiểm tra xem các công cụ nhà phát triển và giá trị POST có được phân tích hay không.
Testing trông nó không, mặc dù javascript cho biết thêm một số giá trị, có thể là từ các tập tin cookie:
__fp w686jv_O1ZZztQ7FkK21Ry2MI7JbqWTf
_sourcePage tJvTQfA5dkvGrJMFkFsv6XbX0f6OV1Ndj1zeGcz7OKzA3gkNXMXGnj27D-H9WXS-
disableThirdPartyLogin false
email [email protected]
includeWorkflow
login Log In
password aeou
redirect
đây là quan điểm của tôi về việc này sử dụng yêu cầu (trong đó có một API tốt hơn so với urllib ;-))
>>> 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)
và đừng quên lần đầu tiên vào trang đăng nhập bằng cách điền vào cookie của bạn!
Cuối cùng, tôi không thể trợ giúp thêm cho bạn vì tôi không có tài khoản hợp lệ trên fitbit.com và tôi không cần/muốn một tài khoản. Vì vậy, tôi chỉ có thể truy cập trang lỗi đăng nhập cho các bài kiểm tra của mình.
chỉnh sửa:
để phân tích kết quả, sau đó bạn có thể sử dụng:
>>> from lxml import etree
>>> p = etree.HTML(r.text)
ví dụ để có được các thông báo lỗi:
>>> p.xpath('//ul[@class="errorList"]/li/text()')
['Lutilisateur nexiste pas ou le mot de passe est incorrect.']
nguồn:
và cả hai đều trên pypi:
pip install lxml requests
HTH
Cảm ơn! Nhưng tiếp theo, làm sao tôi có thể sử dụng r? Tôi chưa bao giờ sử dụng thư viện yêu cầu trước đây. – MacSanhe
bạn có thể sử dụng 'r.status_code' để lấy mã trạng thái,' r.cookies' để lấy jar cookie (hoặc bạn có thể sử dụng 'jar'), bạn có thể sử dụng' r.text' và chuyển nó sang 'lxml' hoặc 'BeautifulSoup' để giúp bạn phân tích cú pháp trang kết quả. Có một cái nhìn tại http://python-requests.org để có được bạn thuyết phục như thế nào tuyệt vời mà thư viện là :-) – zmo
Tôi có nghĩa là những gì tôi thường làm là: 1. opener.open (login_url, dữ liệu) 2. thường xuyên urllib2.urlopen .request (balabalabala) Vì vậy, nếu tôi sử dụng yêu cầu để đăng nhập, điều đó có nghĩa là tôi phải sử dụng yêu cầu để rút ra html từ url? Tôi đã thử bước thứ hai bình thường của mình, nó không hoạt động. – MacSanhe