使用request实现手工输入验证码登录
2019-01-01 23:20:52来源:博客园 阅读 ()
我们的目标网站是这个http://awehome.com.cn,登录页面是这个http://awehome.com.cn/tenant/login
import requests import json url = 'http://awehome.com.cn/tenant/login' headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36', 'Host': 'awehome.com.cn' } session = requests.session() html = session.get(url=url,headers=headers)
搜索我们使用request的session来保存会话并且进入登录页面,他是这样的
我们先来获取验证码,直接通过html.text来获取是找不到他里面的图片的URL的。
<div class="form-group"> <label for="LoginCaptcha">验证码</label> <div class="code-group02"> <input type="text" class="form-control" name="Login[captcha]" v-model="login.captcha" id="LoginCaptcha" autocomplete="off" placeholder="验证码"> <img class="captcha" v-on:click="onCaptcha" id="LoginCaptchaImg"> </div> </div>
html.text这里面是没有src的,他是渲染出来的, 所有我们去找这个js,发现他的函数就在login.js里面。
onCaptcha: function(e){
var self = this;
self.$http.get('/site/captcha?refresh=true').then(function(response){
$('#LoginCaptchaImg').attr('src', response.body.url);
}, function(response){
alert(response.statusText);
});
在login.js我们可以找到这个,可以发现他是通过ajax给/site/captcha?refresh=true发送获取到数据然后将里面的response.body.url也就是验证码的URL设置给src标签。
我们找一下site/captcha?refresh=true这个的包,就是‘http://awehome.com.cn/site/captcha?refresh=true’这个URL。他里面的内容是这样
{"hash1":461,"hash2":461,"url":"/site/captcha?v=5c2735667c357"}
然后我们看到里面的URL,其实他就是验证码图片的URL。既然我们找到图片的URL就简单了,将他保存下来然后手动查看输入验证码即可。全部代码在这
import requests import json url = 'http://awehome.com.cn/tenant/login' headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36', 'Host': 'awehome.com.cn' } session = requests.session() html = session.get(url=url,headers=headers) url1 = 'http://awehome.com.cn/site/captcha?refresh=true' headers['Referer'] = url html = session.get(url=url1,headers=headers) img = json.loads(html.text) url2 = 'http://awehome.com.cn'+ img['url'] img = session.get(url=url2) with open('img.png','wb') as f: f.write(img.content) img = input('请输入验证码') data = { 'referer': 'http://awehome.com.cn/', 'Login[dialcode]': '86', 'Login[phone]': 'xxxxxxx', 'Login[captcha]': str(img), 'Login[password]': 'xxxx', 'Login[rememberMe]': '0' } url='http://awehome.com.cn/tenant/login' data_headers = { 'Accept': 'application/json, text/plain, */*', 'Accept-Encoding': 'gzip, deflate', 'Accept-Language': 'zh-CN,zh;q=0.9', 'Connection': 'keep-alive', 'Content-Length': '164', 'Content-Type': 'application/x-www-form-urlencoded', 'Host': 'awehome.com.cn', 'Origin': 'http://awehome.com.cn', 'Referer': 'http://awehome.com.cn/tenant/login', 'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36', 'X-Requested-With': 'XMLHttpRequest' } html = session.post(url=url,headers=data_headers,data=data) url='http://awehome.com.cn/' html = session.get(url=url,headers=headers) print(html) print(html.text)
大概步骤是先请求登录页面,然后通过抓包找到图片URL,接着提交请求。
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- Django项目中使用qq第三方登录。 2019-08-13
- python day1-requests 2019-08-13
- Python连载30-多线程之进程&线程&线程使用 2019-08-13
- Python学习日记(十) 生成器和迭代器 2019-08-13
- python day2-爬虫实现github登录 2019-08-13
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash