Python模拟登录饿了么

April 15, 2016

工具

  • 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): 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)

 


Profile picture

Written by Armin Li , a venture capitalist. [Weibo] [Subscribe]