关于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 ...
随机推荐
- Python面试题之Python正则表达式指南
1. 正则表达式基础 1.1. 简单介绍 正则表达式并不是Python的一部分.正则表达式是用于处理字符串的强大工具,拥有自己独特的语法以及一个独立的处理引擎,效率上可能不如str自带的方法,但功能十 ...
- 【WIN7】windows\system32 下的几乎所有文件的简单说明【2】
1: System32的详解 C:\WINDOWS\system32... 2: 3: 这个 system32 文件夹中包含了大量的用于 Windows 的文件. 这里主要用于存储 DLL 文件, ...
- HTML5 SVG世界地图
在线演示 本地下载
- mysql数据库导入、导出、数据传输
Navicat数据库之间导入导出1.双击要导出的数据库,右键选转储SQL文件...,选择要保存的文件夹. 2.点击开始后,开始导出. 数据库导入1.新建数据库,数据库的名字必须和导入的数据库文件一致. ...
- linux根分区满了如何处理,查找大文件方法
一:如果linux根分区使用量达到100%,会造成如下现象: root不能登录 系统不能正常启动 二:通过命令查找根分区内的大文件 du -sh /* 2>/dev/null | sort -h ...
- springboot学习(三)——使用HttpMessageConverter进行http序列化和反序列化
以下内容,如有问题,烦请指出,谢谢! 对象的序列化/反序列化大家应该都比较熟悉:序列化就是将object转化为可以传输的二进制,反序列化就是将二进制转化为程序内部的对象.序列化/反序列化主要体现在程序 ...
- HDU 1532 --&&-- POJ1273 dinic 算法
学长的代码#include<stdio.h> #include<string.h> #include<queue> #include<algorithm> ...
- Netty-SocketIO的Web推送实战应用
netty-socketio是一个开源的Socket.io服务器端的一个java的实现, 它基于Netty框架.可应用于服务端主动推送消息到客户端等场景,比如说股票价格变化.k线图的走势,和webso ...
- 什么是webhook
什么是webhook 翻译,原文地址:https://sendgrid.com/blog/webhook-vs-api-whats-difference/ 一.概述 Webhook是一个API概念,并 ...
- kafka入门使用
kafka版本0.11.0.1以上自带zookeeper,必须要求环境中有jdk,解压后进入目录 1.在kafka解压目录下下有一个config的文件夹,里面放置的是我们的配置文件 consumer. ...