前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用request实现手工输入验证码登录

使用request实现手工输入验证码登录

作者头像
py3study
发布2020-01-19 15:54:21
1.1K0
发布2020-01-19 15:54:21
举报
文章被收录于专栏:python3python3

我们的目标网站是这个http://awehome.com.cn,登录页面是这个http://awehome.com.cn/tenant/login

代码语言:javascript
复制
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的。

代码语言:javascript
复制
<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里面。

代码语言:javascript
复制
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。他里面的内容是这样

代码语言:javascript
复制
{"hash1":461,"hash2":461,"url":"/site/captcha?v=5c2735667c357"}

然后我们看到里面的URL,其实他就是验证码图片的URL。既然我们找到图片的URL就简单了,将他保存下来然后手动查看输入验证码即可。全部代码在这

代码语言:javascript
复制
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,接着提交请求。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-04-29 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
验证码
腾讯云新一代行为验证码(Captcha),基于十道安全栅栏, 为网页、App、小程序开发者打造立体、全面的人机验证。最大程度保护注册登录、活动秒杀、点赞发帖、数据保护等各大场景下业务安全的同时,提供更精细化的用户体验。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档