Python模拟登录饿了么

工具

  • Firefox开发版
  • PyCharm

用火狐的原因是它可以显示get或post方法,不用挨个点进去看。

思路

打开饿了么登录界面:https://account.ele.me/login,按F12,选择“网络”,然后按F5刷新页面。
enter image description here

再来看饿了么的登录界面,需要验证码,所以我们要先得到验证码让用户输入才可以模拟登录。

观察名为“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 requests

def getCaptchaURL(res):
    code = res.text.split(':')[1].split('"')[1]
    return 'https://account.ele.me/restapi/v1/captchas/' + code

def downloadCaptcha(res):
    eleme_captcha = s.get(getCaptchaURL(res), stream = True)
    f = open('D://1.jpg', 'wb')
    for line in eleme_captcha.iter_content(10):
        f.write(line)
    f.close

s = requests.Session()
home_url = 'https://account.ele.me/login'
base_headers = {
    '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:')
login_data ={"captcha_code":captcha,"username":"13333333333","password":"123456"}

res = s.post('https://account.ele.me/restapi/v1/login',data = json.dumps(login_data),headers = base_headers,cookies = _cookies)
_cookies = res.cookies
print(res.status_code)

 

Zhao Li /
Published under (CC) BY-NC-SA in categories Python  tagged with 模拟登录