不久前,通过网上查阅各种资料,一直想利用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模拟登录的一点实践的更多相关文章

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

    最近由于某些原因,需要用到Python模拟登录网站,但是以前对这块并不了解,而且目标网站的登录方法较为复杂, 所以一下卡在这里了,于是我决定从简单的模拟开始,逐渐深入地研究下这块. 注:本文仅为交流学 ...

  2. 【py登陆】python模拟登录

    用Python模拟登录网站 前面简单提到了 Python 模拟登录的程序,但是没写清楚,这里再补上一个带注释的 Python 模拟登录的示例程序.简单说一下流程:先用cookielib获取cookie ...

  3. 忘记秘密利用python模拟登录暴力破解秘密

    忘记秘密利用python模拟登录暴力破解秘密: #encoding=utf-8 import itertools import string import requests def gen_pwd_f ...

  4. [Python] Python 模拟登录,并请求

    Python 模拟登录,并请求 # encoding: utf- import requests import socket import time socket.setdefaulttimeout( ...

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

    模拟登录的原理都差点儿相同.大致都是这样: 打开首页获取相关cookie: 提交登陆表单(即username与password). 确认是否登录成功. 假设想了解更具体的原理与相关知识,推荐到具体解释 ...

  6. Python模拟登录的几种方法

    目录 方法一:直接使用已知的cookie访问 方法二:模拟登录后再携带得到的cookie访问 方法三:模拟登录后用session保持登录状态 方法四:使用无头浏览器访问 正文 方法一:直接使用已知的c ...

  7. 2019年最新 Python 模拟登录知乎 支持验证码

    知乎的登录页面已经改版多次,加强了身份验证,网络上大部分模拟登录均已失效,所以我重写了一份完整的,并实现了提交验证码 (包括中文验证码),本文我对分析过程和代码进行步骤分解,完整的代码请见末尾 Git ...

  8. Python 模拟登录几种常见方法

    方法一:直接使用已知的cookie访问 优点: 简单,但需要先在浏览器登录 原理: 简单地说,cookie保存在发起请求的客户端中,服务器利用cookie来区分不同的客户端.因为http是一种无状态的 ...

  9. Python模拟登录实战(三)

    目标:模拟登录知乎 代码如下: #!/usr/bin/env python # -*- coding:utf-8 -*- __author__ = 'ziv·chan' import re impor ...

随机推荐

  1. Java伪代码示例

    学习并转载自https://www.cnblogs.com/z245894546/p/7535261.html import.java.大道至简.*; import.java.愚公移山.*; publ ...

  2. sublime text3配置ctrl+鼠标左键进行函数跳转【转】

    本文转载自:https://blog.csdn.net/shangdibaozi/article/details/77503426 点击Preferences->Browse Packages进 ...

  3. 读取Excel复杂的数据

    涉及到合并单元格的数据读取: package com.util; import org.apache.poi.ss.usermodel.*; import org.apache.poi.ss.util ...

  4. LeetCode——Next Greater Element I

    LeetCode--Next Greater Element I Question You are given two arrays (without duplicates) nums1 and nu ...

  5. java基础(4)--运算符及表达式

    运算符及表达式 算数运算 加(+) 减(-) 乘(*)  除(/) 取余(%) 自增(++) 自减(- -) 注意点 1. 同种类型参与运算(可能需要自动类型转换),返回同种类型 2. 整数的除法是整 ...

  6. All Classic Bluetooth profile for iPhone

    iPhone BC profiles Profile Decription HFP1.6 1.通知客户端有电话拨入:2.免提功能:3.音频的输入输出机制. PBAP 1.下载通讯录:2.查找通讯录:3 ...

  7. IDEA 修改JSP和后端数据后,页面刷新可以实时更新

    情况:刚开始使用IDEA进行开发时,发现修改JSP页面或者后端数据后,再刷新浏览器页面,发现没有变化,页面无更新. 这样就导致不得不频繁重启tomcat服务器.非常麻烦 解决方法: 步骤1. 先设置t ...

  8. Java中List集合的常用方法

    List接口是继承Collection接口,所以Collection集合中有的方法,List集合也继承过来. 这篇文章就不讲继承Collection接口的那些方法了 https://www.cnblo ...

  9. JQuery -- 介绍,选择器及其示例, 基本选择器,层次选择器,过滤选择器,表单选择器

    1. 什么是jQuery对象 jQuery 对象就是通过jQuery包装DOM对象后产生的对象. jQuery对象是jQuery独有的.如果一个对象是jQuery对象,那么它就可以使用jQuery里的 ...

  10. 编写一个程序,将 a.txt 文件中的单词与 b.txt 文件中的单词交替合并到 c.txt 文件中,a.txt 文件中的单词用回车符分隔,b.txt 文件中用回车或空格进行分隔。

    package IO; import java.io.*; public class test { public void connectWords(File file1, File file2, F ...