关于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 ...
随机推荐
- 整合subeclipse和Tortoise SVN
先来一个下载链接(subeclipse1.8和TortoiseSVN1.7): http://download.csdn.net/detail/cangfengluyu/8416395 对于同 ...
- c# 布局(stackpanel)
<Grid> <StackPanel> <Button Content="asas"> </Button> <Button C ...
- CSS3鼠标悬停边框线条动画按钮
在线演示 本地下载
- Ubuntu 14.04上架IPSec+L2TP的方法
最简单的方法是使用脚本一步一步地进行配置.我用的是philplckthun写的脚本,修改了一下获取服务器IP的方法:脚本文件. 在ubuntu下运行: sh setup.sh 配置配置完成后,服务器端 ...
- hadoop源码分析
hadoop 源代码分析(一) Google 的核心竞争技术是它的计算平台.HadoopGoogle的大牛们用了下面5篇文章,介绍了它们的计算设施. GoogleCluster:http://rese ...
- Spring_HelloWorld
目录: 各个类文件: pom.xml <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="h ...
- [BZOJ1018]堵塞的交通traffic
Description 有一天,由于某种穿越现象作用,你来到了传说中的小人国.小人国的布局非常奇特,整个国家的交通系统可以被看成是一个2行C列的矩形网格,网格上的每个点代表一个城市,相邻的城市之间有一 ...
- Difference between RouteTable.Routes and HttpConfiguration.Routes?
https://stackoverflow.com/questions/12533782/difference-between-routetable-routes-and-httpconfigurat ...
- JavaScript中this关键字的使用比较
JavaScript中this关键字的使用比较 this关键字在JavaScript中,用的不能说比较多,而是非常多.那么熟悉this关键字的各种用法则显得非常关键. this有时候就是我们经常说的上 ...
- .NET中如何测试Private和Protected方法
TDD是1)写测试2)写通过这些测试的代码,3)然后重构的实践.在,NET社区中, 这个概念逐渐变得非常流行,这归功于它所增加的质量保证.此时,它很容易测试public方法,但是一个普遍的问题出现了, ...