使用request实现手工输入验证码登录
我们的目标网站是这个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]': '',
'Login[phone]': 'xxxxxxx',
'Login[captcha]': str(img),
'Login[password]': 'xxxx',
'Login[rememberMe]': ''
}
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': '',
'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,接着提交请求。
使用request实现手工输入验证码登录的更多相关文章
- Spring Security构建Rest服务-0702-短信验证码登录
先来看下 Spring Security密码登录大概流程,模拟这个流程,开发短信登录流程 1,密码登录请求发送给过滤器 UsernamePasswordAuthenticationFilter 2,过 ...
- 简单说说Spring Security 使用(附加验证码登录,自定义认证)
先看官方文档:http://docs.spring.io/spring-security/site/docs/4.0.x/reference/htmlsingle/ spring security4已 ...
- scrapy爬取验证码登录网页
scrapy 验证码登录程序, https://accounts.douban.com/login # -*- coding: utf-8 -*- import scrapy import urlli ...
- Spring Security 实现手机验证码登录
思路:参考用户名密码登录过滤器链,重写认证和授权 示例如下(该篇示例以精简为主,演示主要实现功能,全面完整版会在以后的博文中发出): 由于涉及内容较多,建议先复制到本地工程中,然后在细细研究. 1. ...
- Django(十六)基于模板的登录案例:登录装饰器、csrf攻击方式及防护、ajax的Post 的csrf开启写法、生成验证码、加验证码登录、反向解析+传参
一.csrf攻击 1.1 csrf攻击(跨站请求伪造) [csrf攻击即]:通过第3方网站,伪造请求(前提条件是你已经登录正常网站,并保存了session或cookie登录信息且没有退出),第三方网站 ...
- Spring Security 实战干货:从零手写一个验证码登录
1. 前言 前面关于Spring Security写了两篇文章,一篇是介绍UsernamePasswordAuthenticationFilter,另一篇是介绍 AuthenticationManag ...
- 微信小程序+laravel 7+ Redis +短信宝 实现手机号验证码登录
以下代码可以进行优化和封装:这里我实现功能为主,就不封装啦.小伙伴可以自己试着封装一下. 1:书写登录表单 <view class="container"> <v ...
- JavaWeb 08_JSP+Dao+Bean+Servlet 实现登录注册(连接数据库,验证码登录,两周内免登陆等功能)
一.数据库db_01 表usert 字段username,password 二. 目录 三. 配置信息 四. 代码 index.jsp <script type="text/j ...
- Springboot实现验证码登录
Springboot实现验证码登录 1.背景 本人近期正在完成毕业设计(旅游信息管理系统)的制作,采用的SpringBoot+Thymeleaf的模式.在登录网站时想要添加验证码验证,通过网上查找资料 ...
随机推荐
- mysql的navicat注册码生成
首先下载安装Navicat在Navicat关闭的情况下运行注册机在注册机界面点击patch,选择Navicat安装目录下的Navicat.exe打补丁弹出破解成功后拔掉网线断网products选择my ...
- servlet与jsp理论知识讲解
servlet是java服务器端编程,是运行在服务器上的.不同于以前的java小程序. ...
- linux应用之mysql数据库指定版本的yum安装(centos)
A Quick Guide to Using the MySQL Yum Repository Abstract The MySQL Yum repository provides RPM packa ...
- 编译thrift外篇-关于默认链接包-(使用mapkeeper运行leveldb成功)
根据 https://stackoverflow.com/questions/9922949/how-to-print-the-ldlinker-search-path 使用 ldconfig -v ...
- css 鼠标移入边框填充效果
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- 谈谈javaScript
谈谈javaScript (杰我学习) 一. 什么是JavaScript 人们通常所说的JavaScript,其正式名称为ECMAScript.这个标准由ECMA组织发展和维护.ECMA ...
- 点分治 [IOI2011]Race
BZOJ2599. 放板子.利用agc009-D 代码简洁了很多 #include <bits/stdc++.h> #define N 200005 using namespace std ...
- codevs 2102 石子归并2
传送门 2102 石子归并 2 时间限制: 10 s 空间限制: 256000 KB 题目等级 : 黄金 Gold 题目描述 Description 在一个园形操场的四周摆放N堆石子,现要将 ...
- bzoj2117
动态电分治+二分 肯定要枚举所有点对,那么我们建出点分树降低树高,然后每个点存下点分树中所有子树到这个点的距离,然后二分+lower_bound就行了. #include<bits/stdc++ ...
- windows安装PHP5.4+Apache2.4+Mysql5.5
windows安装PHP5.4+Apache2.4+Mysql5.5 作者:星之宇 ┊ 时间:2012-10-18 14:27 ┊ 分类: 网站技术 ┊ 阅读:1232 ┊ 评论:16 最近听说PHP ...