关于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实现一个计算器
import re def atom_cal(exp): # 计算乘除法 if '*' in exp: a,b = exp.split('*') return str(float(a) * float ...
- BZOJ 一句话题解
菜鸡刷题记录 [题号:题解] 1008:简单排列组合 #include <bits/stdc++.h> using namespace std; #define ll long long ...
- Python3.x:百分比数转小数
Python3.x:百分比数转小数 def change_percent(num): zfflag = "" if "+" in num: num = num. ...
- Android应用程序用真机调试步骤
仅供参考: 1.开启调试模式 2.安装 Adb.exe 将platform-tools文件夹里面adb.exe AdbWinApi.dll AdbWinUsbApi.dll拷贝到tools ...
- spring security结合数据库验证用户-XML配置方式
之前的用户信息我们都是使用的内存用户,测试例子可以,实际中使用肯定不行,需要结合数据库进行验证用户.这就是本节的重点: 项目目录如下: 在之前的项目中的依赖中添加两个依赖: <dependen ...
- Which HTTP methods match up to which CRUD methods?
https://stackoverflow.com/questions/6203231/which-http-methods-match-up-to-which-crud-methods Crea ...
- linux 分析进程占用CPU过高
重点是查看进程的线程中,哪个线程占用cpu过高,然后用gdb附加到进程,调试线程,看是否有死循环或者死锁等问题,步骤如下: 1 先用ps + grep找出该死的进程pid,比如 1706 2 top ...
- TWX 比较好的多线程使用实例
using Newtonsoft.Json;using System;using System.Collections.Generic;using System.Configuration;using ...
- scala学习手记11 - 类定义
这里会通过与Java比较的方式来说明scala是如何创建类的. 先来看一下Java中是如何定义一个类的: public class Car { private final int year; priv ...
- poj1330lca入门题
直接套模板,dfs的时候注意起点 #include<map> #include<set> #include<cmath> #include<queue> ...