关于python模拟登录的一点实践
不久前,通过网上查阅各种资料,一直想利用python来实现模拟登录的功能,通过csdn汪海的博客学会了一点,但也只能算个皮毛,亦或皮毛都算不上。
边查阅资料边写一个小东西,起初想写一个程序,通过暴力破解+模拟登录的方式来实现破解学校一卡通的密码,孰料,强力破解面对六位数的密码的1000000种尝试,很难短时间破解,另一原因在于暴力尝试的时候服务器端总是出问题,代号为500,遂搁浅。
现在只实现了有密码的登录一个人的帐号,读出首页信息,具体的消费记录涉及到翻页的问题,每次翻页都会提交一串好长的串,不能理解。
代码如下:
# -*-coding:utf-8-*-
import requests
import re
class TOOl:
removingfont=re.compile('[\n]*?',re.S)
def replace(self,x):
x=re.sub(self.removingfont,"",x)
return x.strip()
class YKTCX:
def __init__(self):
###登录页的url
self.url = 'http://ecard.jit.edu.cn/cxweb/Default.aspx'
self.url2='http://ecard.jit.edu.cn/cxweb/information.aspx'
###有些网站反爬虫,这里用headers把程序伪装成浏览器
self.header = { 'User-Agent' : 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.101 Safari/537.36' }
###登录需要提交的表单
self.form_data = {'__LASTFOCUS':'',
'__EVENTTARGET':'login',
'__EVENTARGUMENT':'',
'__VIEWSTATE':'/wEPDwULLTE3NjgxMTcwNzgPZBYCAgEPZBYCAgsPDxYCHgRUZXh0BSPnlKjmiLflkI3miJblr4bnoIHplJnor68s6K+35qOA5p+lIWRkZFM8z2dw6ByHwFFBvycALiWDa9q3',
'TextBox1':'xxxxxx', #填入网站的上网帐号
'TextBox2':'xxxxx', #填入网站密码(加密后的)
'__EVENTVALIDATION':'/wEWBAKp05aFCwLs0bLrBgLs0fbZDAKPyPGACtrG6xUCnmOzvJ+yqUZ87xcAfrth',}
self.form_data['TextBox1']='01305xxxx'
self.form_data['TextBox2']='xxxxx'
self.tool=TOOl()
def login(self):
s = requests.session()
response = s.post(self.url,data = self.form_data,headers = self.header)
# print response.content
r=s.get(self.url2,allow_redirects = False)
# print r.content
if r.status_code==200:
print self.name(r.content)+'\n'+self.banji(r.content)+'\n'+self.banknumber(r.content)+'\n'+self.stuid(r.content)[1:]
else:
print '请求出错\n'
r=s.get('http://ecard.jit.edu.cn/cxweb/consumesele.aspx')
if r.status_code==200:
# print r.content
self.details(r.content) def title(self,page):
pattern=re.compile('(<title>)(.*?)(</title>)')
result=re.search(pattern,page)
if result:
return result.group(1)
else:
return None
def name(self,page):
pattern=re.compile('<span id="MEMBER_NAME">(.*?)</span>',re.S)
result=re.search(pattern,page)
if result:
return result.group(1)
else:
return None
def idcard(self,page):
pattern=re.compile('<span id="IDENTITY_CARD">(.*?)</span>',re.S)
result=re.search(pattern,page)
if result:
return result.group(1)
else:
return None
def stuid(self,page):
pattern=re.compile('<span id="MEMBER_CODE">(.*?)</span>',re.S)
result=re.search(pattern,page)
if result:
return result.group(1)
else:
return None
def banji(self,page):
pattern=re.compile('<span id="DEPT_DESCRIPTION">(.*?)</span>',re.S)
result=re.search(pattern,page)
if result:
return result.group(1)
else:
return None
def banknumber(self,page):
pattern=re.compile('<span id="BANKNUMBER">(.*?)</span>',re.S)
result=re.search(pattern,page)
if result:
return result.group(1)
else:
return None
def details(self,page):
pattern=re.compile('<td align="center"><font face="宋体" color="#000066">(.*?)</font></td>',re.S)
results=re.findall(pattern,page)
if results:
for item in results:
# print self.tool.replace(results[1])
print self.tool.replace(item)
print"____________________-"
else:
return None a=YKTCX()
a.login()
今天六级分数出来,由于忘记了准考证号码,想利用同学的号码来遍历一下实现不同尝试,无奈http://www.chsi.com.cn/cet/这个网站的登录有些怪异,只能怪自己才学疏浅吧,未能如愿
关于python模拟登录的一点实践的更多相关文章
- 【Python数据分析】Python模拟登录(一) requests.Session应用
最近由于某些原因,需要用到Python模拟登录网站,但是以前对这块并不了解,而且目标网站的登录方法较为复杂, 所以一下卡在这里了,于是我决定从简单的模拟开始,逐渐深入地研究下这块. 注:本文仅为交流学 ...
- 【py登陆】python模拟登录
用Python模拟登录网站 前面简单提到了 Python 模拟登录的程序,但是没写清楚,这里再补上一个带注释的 Python 模拟登录的示例程序.简单说一下流程:先用cookielib获取cookie ...
- 忘记秘密利用python模拟登录暴力破解秘密
忘记秘密利用python模拟登录暴力破解秘密: #encoding=utf-8 import itertools import string import requests def gen_pwd_f ...
- [Python] Python 模拟登录,并请求
Python 模拟登录,并请求 # encoding: utf- import requests import socket import time socket.setdefaulttimeout( ...
- Python模拟登录wap版百度贴吧+自己主动回贴
模拟登录的原理都差点儿相同.大致都是这样: 打开首页获取相关cookie: 提交登陆表单(即username与password). 确认是否登录成功. 假设想了解更具体的原理与相关知识,推荐到具体解释 ...
- Python模拟登录的几种方法
目录 方法一:直接使用已知的cookie访问 方法二:模拟登录后再携带得到的cookie访问 方法三:模拟登录后用session保持登录状态 方法四:使用无头浏览器访问 正文 方法一:直接使用已知的c ...
- 2019年最新 Python 模拟登录知乎 支持验证码
知乎的登录页面已经改版多次,加强了身份验证,网络上大部分模拟登录均已失效,所以我重写了一份完整的,并实现了提交验证码 (包括中文验证码),本文我对分析过程和代码进行步骤分解,完整的代码请见末尾 Git ...
- Python 模拟登录几种常见方法
方法一:直接使用已知的cookie访问 优点: 简单,但需要先在浏览器登录 原理: 简单地说,cookie保存在发起请求的客户端中,服务器利用cookie来区分不同的客户端.因为http是一种无状态的 ...
- Python模拟登录实战(三)
目标:模拟登录知乎 代码如下: #!/usr/bin/env python # -*- coding:utf-8 -*- __author__ = 'ziv·chan' import re impor ...
随机推荐
- hadoop23---自定义rpc架构(duboo的原理)
- 一个linux命令(6/13):traceroute命令
通过traceroute 我们可以知道信息从你的计算机到互联网另一端的主机是走的什么路径.当然每次数据包由某一同样的出发点(source)到达某一同样的目的地(destination)走的路径可能会不 ...
- Linux静默安装Oracle
打算在云服务器上装oracle服务,以前DBA美眉都是在图形化界面下安装,这次抓瞎了.赶紧上网查查,静默安装可以解决问题.于是乎赶紧开始部署,过程如下.安装环境:操作系统:CentOS 7内存:11G ...
- 项目中使用better-scroll实现移动端滚动,报错:Cannot read property 'children' of undefined better-scroll
就是外面的盒子和要滚动的元素之间要有一层div, 插件挂载的元素是menuWrapper,可以滚动的元素是ul,在这两个元素之间加一个div元素即可解决问题.
- 20145201 《Java程序设计》第五周学习总结
20145201 <Java程序设计>第五周学习总结 教材学习内容总结 本周学习了课本第八.九章内容,即异常处理.Collection与Map. 第八章 异常处理 8.1 语法与集成架构 ...
- mysql官网下载链接——绿色版&安装版
windows64位5.5.60安装版 https://downloads.mysql.com/archives/get/file/mysql-5.5.60-winx64.msi windows64位 ...
- 介绍几个C#正则表达式工具
这里将为大家推荐介绍几个C#正则表达式工具,这些小工具能帮助大家在.NET开发过程中起到事半功倍的效果,希望大家喜欢. 推荐三个C#正则表达式工具,理由如下 第一个C#正则表达式工具,REGEX 这个 ...
- SpiralOrderTraverse,螺旋遍历二叉树,利用两个栈
问题描述:s型遍历二叉树,或者反s型遍历二叉树 算法分析:层序遍历二叉树只需要一个队列,因为每一层都是从左往右遍历,而s型遍历二叉树就要用两个栈了,因为每次方向相反. public static vo ...
- java 枚举类型 enum
在java SE5中添加了枚举类型,即enum关键字.在这之前,当你需要创建一个整形常量集时,但是这些枚举值并不会必然的将其自身的取值限制在这个常量集的范围之内,因此这样做的显得不安全,也不方便使用. ...
- HTTP Status 500 - Unable to instantiate Action, customerAction, defined for 'customer_toAddPage' i
使用struts2时碰到这样的错误 HTTP Status 500 - Unable to instantiate Action, customerAction, defined for 'custo ...