关于python模拟登录的一点实践

  不久前,通过网上查阅各种资料,一直想利用python来实现模拟登录的功能,通过csdn汪海的博客学会了一点,但也只能算个皮毛,亦或皮毛都算不上。

边查阅资料边写一个小东西,起初想写一个程序,通过暴力破解+模拟登录的方式来实现破解学校一卡通的密码,孰料,强力破解面对六位数的密码的1000000种尝试,很难短时间破解,另一原因在于暴力尝试的时候服务器端总是出问题,代号为500,遂搁浅。

  现在只实现了有密码的登录一个人的帐号,读出首页信息,具体的消费记录涉及到翻页的问题,每次翻页都会提交一串好长的串,不能理解。

代码如下:

 1 # -*-coding:utf-8-*-
 2 import requests
 3 import re
 4 class TOOl:
 5     removingfont=re.compile(‘[\n]*?‘,re.S)
 6     def replace(self,x):
 7         x=re.sub(self.removingfont,"",x)
 8         return x.strip()
 9 class YKTCX:
10     def __init__(self):
11         ###登录页的url
12         self.url = ‘http://ecard.jit.edu.cn/cxweb/Default.aspx‘
13         self.url2=‘http://ecard.jit.edu.cn/cxweb/information.aspx‘
14         ###有些网站反爬虫,这里用headers把程序伪装成浏览器
15         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‘ }
16 ###登录需要提交的表单
17         self.form_data = {‘__LASTFOCUS‘:‘‘,
18                     ‘__EVENTTARGET‘:‘login‘,
19                     ‘__EVENTARGUMENT‘:‘‘,
20                     ‘__VIEWSTATE‘:‘/wEPDwULLTE3NjgxMTcwNzgPZBYCAgEPZBYCAgsPDxYCHgRUZXh0BSPnlKjmiLflkI3miJblr4bnoIHplJnor68s6K+35qOA5p+lIWRkZFM8z2dw6ByHwFFBvycALiWDa9q3‘,
21 ‘TextBox1‘:‘xxxxxx‘, #填入网站的上网帐号
22     ‘TextBox2‘:‘xxxxx‘,  #填入网站密码(加密后的)
23 ‘__EVENTVALIDATION‘:‘/wEWBAKp05aFCwLs0bLrBgLs0fbZDAKPyPGACtrG6xUCnmOzvJ+yqUZ87xcAfrth‘,}
24         self.form_data[‘TextBox1‘]=‘01305xxxx‘
25         self.form_data[‘TextBox2‘]=‘xxxxx‘
26         self.tool=TOOl()
27     def login(self):
28         s = requests.session()
29         response = s.post(self.url,data = self.form_data,headers = self.header)
30     #    print response.content
31         r=s.get(self.url2,allow_redirects = False)
32 #        print r.content
33         if r.status_code==200:
34             print self.name(r.content)+‘\n‘+self.banji(r.content)+‘\n‘+self.banknumber(r.content)+‘\n‘+self.stuid(r.content)[1:]
35         else:
36             print ‘请求出错\n‘
37         r=s.get(‘http://ecard.jit.edu.cn/cxweb/consumesele.aspx‘)
38         if r.status_code==200:
39 #            print r.content
40             self.details(r.content)
41
42
43     def title(self,page):
44         pattern=re.compile(‘(<title>)(.*?)(</title>)‘)
45         result=re.search(pattern,page)
46         if result:
47             return result.group(1)
48         else:
49             return None
50     def name(self,page):
51         pattern=re.compile(‘<span id="MEMBER_NAME">(.*?)</span>‘,re.S)
52         result=re.search(pattern,page)
53         if result:
54             return result.group(1)
55         else:
56             return None
57     def idcard(self,page):
58         pattern=re.compile(‘<span id="IDENTITY_CARD">(.*?)</span>‘,re.S)
59         result=re.search(pattern,page)
60         if result:
61             return result.group(1)
62         else:
63             return None
64     def stuid(self,page):
65         pattern=re.compile(‘<span id="MEMBER_CODE">(.*?)</span>‘,re.S)
66         result=re.search(pattern,page)
67         if result:
68             return result.group(1)
69         else:
70             return None
71     def banji(self,page):
72         pattern=re.compile(‘<span id="DEPT_DESCRIPTION">(.*?)</span>‘,re.S)
73         result=re.search(pattern,page)
74         if result:
75             return result.group(1)
76         else:
77             return None
78     def banknumber(self,page):
79         pattern=re.compile(‘<span id="BANKNUMBER">(.*?)</span>‘,re.S)
80         result=re.search(pattern,page)
81         if result:
82             return result.group(1)
83         else:
84             return None
85     def details(self,page):
86         pattern=re.compile(‘<td align="center"><font face="宋体" color="#000066">(.*?)</font></td>‘,re.S)
87         results=re.findall(pattern,page)
88         if results:
89             for item in results:
90     #        print self.tool.replace(results[1])
91                 print self.tool.replace(item)
92             print"____________________-"
93         else:
94             return None
95
96 a=YKTCX()
97 a.login()

今天六级分数出来,由于忘记了准考证号码,想利用同学的号码来遍历一下实现不同尝试,无奈http://www.chsi.com.cn/cet/这个网站的登录有些怪异,只能怪自己才学疏浅吧,未能如愿

时间: 2024-10-31 18:50:53

关于python模拟登录的一点实践的相关文章

【Python模拟登录】RSA加密与重放方式登录 -以模拟登录博客园为例

Python模拟登录第一弹见:[Python数据分析]Python模拟登录(一) requests.Session应用上次的登录是最基本的,全部是明文,而且在浏览器中就可以看到POST的数据.接下来我们来个稍微难一点的–模拟登录博客园(http://www.cnblogs.com) 登录特点:用户名密码都进行了RSA加密,且在浏览器中无法看到POST数据 图1如上图,在post数据中不能显式看到POST内容. 模拟登录步骤 既然浏览器调试功能无法探测到POST数据,那么采用Fiddler试试看,

Python模拟登录后爬取网站内容(小说)

最近有个好友让我帮忙爬取个小说,这个小说是前三十章直接可读,后面章节需要充值VIP可见.所以就需要利用VIP账户登录后,构造Cookie,再用Python的获取每章节的url,得到内容后再使用 PyQuery 解析内容. 注意:构造Cookie的过程中,需要你在 Chrome/Firefox 登录,然后自己在控制台查看 cookie,然后手动加入. 第一步:手动构造cookie,绕过登录 [我这里不是破解账户,想破解请出门左拐] 1 #version 2.7 2 3 #!/usr/bin/pyt

【Python数据分析】Python模拟登录(一) requests.Session应用

最近由于某些原因,需要用到Python模拟登录网站,但是以前对这块并不了解,而且目标网站的登录方法较为复杂, 所以一下卡在这里了,于是我决定从简单的模拟开始,逐渐深入地研究下这块. 注:本文仅为交流学习所用. 登录特点:明文传输,有特殊标志数据 会话对象requests.Session能够跨请求地保持某些参数,比如cookies,即在同一个Session实例发出的所有请求都保持同一个cookies,而requests模块每次会自动处理cookies,这样就很方便地处理登录时的cookies问题.

Python模拟登录wap版百度贴吧+自动回贴

模拟登录的原理都差不多,大致都是这样: 打开首页获取相关cookie: 提交登陆表单(即用户名与密码): 确认是否登录成功: 如果想了解更具体的原理与相关知识,推荐到详解抓取网站,模拟登陆,抓取动态网页的原理和实现(Python,C#等).(不过这系列博文实在太绕太绕太绕,数十篇文章互相穿插让人头晕眼花,我前后断断续续历时几个月才搞懂并编码测试成功) 模拟登录的关键点有两个,一是使用抓包工具(如chrome开发者控制台)分析表单提交的真实链接与相关get/post参数,二是编写管理cookie的

Python模拟登录wap版百度贴吧+自己主动回贴

模拟登录的原理都差点儿相同,大致都是这样: 打开首页获取相关cookie. 提交登陆表单(即username与password). 确认是否登录成功. 假设想了解更具体的原理与相关知识,推荐到具体解释抓取站点,模拟登陆.抓取动态网页的原理和实现(Python,C#等).(只是这系列博文实在太绕太绕太绕,数十篇文章互相穿插让人头晕眼花,我前后断断续续历时几个月才搞懂并编码測试成功) 模拟登录的关键点有两个.一是使用抓包工具(如chrome开发人员控制台)分析表单提交的真实链接与相关get/post

python模拟登录知乎

这是一个模拟登录知乎的爬虫.运行后输入用户名密码以及和程序同一目录下的验证码图片,登陆成功后能够显示你在豆瓣地昵称. #! /usr/bin/env python #! -*-coding: utf-8 -*- import json import urllib import urllib2 import cookielib class Zhihu_login(object): """登陆知乎的一个演示程序""" def __init__(sel

python模拟登录开源中国

我的个人博客( 肥龙的博客)发表了新文章了! 欢迎大家过来阅读,以下是文章的连接地址 http://www.comingcode.com/?p=371 继上一篇文章模拟登录百度空间(http://www.comingcode.com/?p=357)后,为了多点推广自己的博客,通过上网搜索资料和分析http数据包,我再次使用python模拟了开源中国的登录操作,能够发表博客同时也能发送动弹. 具体的实现过程也是和登录百度空间的差不多,都是需要去分析http发送的数据包内容. 通过这两篇文章的模拟登

Python模拟登录cnblogs

Python利用requests.Session对象模拟浏览器登录cnblogs request.Session对行可以跨请求的保持cookie,非常方便的用于模拟登录. cnblogs登录页面分析: 登录页面https://passport.cnblogs.com/user/signin 使用抓包工具fiddler(wireshark无法抓取)可以抓取到登录时post的数据: 共三个字段,分别是input1.input2和remember(用户名.密码.是否记住登录信息). 其中,input1

python模拟登录的实现

本文主要用python实现了对网站的模拟登录.通过自己构造post数据来用Python实现登录过程. 当你要模拟登录一个网站时,首先要搞清楚网站的登录处理细节(发了什么样的数据,给谁发等...).我是通过HTTPfox来抓取http数据包来分析该网站的登录流程.同时,我们还要分析抓到的post包的数据结构和header,要根据提交的数据结构和heander来构造自己的post数据和header. 分析结束后,我们要构造自己的HTTP数据包,并发送给指定url.我们通过urllib2等几个模块提供