工具
- Firefox开发版
- PyCharm
用火狐的原因是它可以显示get或post方法,不用挨个点进去看。
思路
打开饿了么登录界面:https://account.ele.me/login,按F12,选择“网络”,然后按F5刷新页面。
再来看饿了么的登录界面,需要验证码,所以我们要先得到验证码让用户输入才可以模拟登录。
观察名为“7f2a6247270046e57f93cc87752f443fc0630e45”的图片(字符串可能不一样),也就是验证码,所以我们应该先获取到这个图片。
注意它的请求网址:
https://account.ele.me/restapi/v1/captchas/7f2a6247270046e57f93cc87752f443fc0630e45
就是 https://account.ele.me/restapi/v1/captchas/+字符串
那么这个如何获得这个字符串?
点击POST方法的captchas文件,再点击“响应”可以发现
code:”7f2a6247270046e57f93cc87752f443fc0630e45”
这下思路就很清晰了,先请求https://account.ele.me/restapi/v1/captchas,然后取回验证码,最后登录。
代码
需要安装requests的模块
import json import requestsdef getCaptchaURL(res): code = res.text.split(’:‘)[1].split(’”‘)[1] return ’https://account.ele.me/restapi/v1/captchas/’ + code
def downloadCaptcha(res): elemecaptcha = s.get(getCaptchaURL(res), stream = True) f = open(‘D://1.jpg’, ‘wb’) for line in elemecaptcha.iter_content(10): f.write(line) f.close
s = requests.Session() homeurl = ’https://account.ele.me/login’ baseheaders = { ‘User-Agent’: ‘Mozilla/5.0 (Windows NT 6.1; WOW64; rv:47.0) Gecko/20100101 Firefox/47.0’, ‘Connection’: ‘keep-alive’ }
res = s.post(’https://account.ele.me/restapi/v1/captchas’) _cookies = res.cookies downloadCaptcha(res) captcha = input(‘captcha:’) logindata ={“captchacode”:captcha,“username”:“13333333333”,“password”:“123456”}
res = s.post(’https://account.ele.me/restapi/v1/login’,data = json.dumps(logindata),headers = baseheaders,cookies = _cookies) _cookies = res.cookies print(res.status_code)