python之简单POST模拟登录
首先是对模拟登录的网站进行抓包分析,分析HTTP中的GET/POST参数,密码加密方式等。
下面是用python3写的简单的POST,没有对cookie的处理,注意python2需要略做修改,区别是urllib,urllib2等有了变动。
#!/usr/bin/env python3
# coding=utf-8
# XX 网站模拟登录
import sys #for sys.argv
import urllib
import urllib.request
import urllib.parse url = 'http://xxx'
def login():
action = 'login'
username = 'xxx' #可将密码等保存至文件
password = 'xxx'
ac_id = 6
type = 1
data = {'action': action,
'username': username,
'password': password,
'ac_id': ac_id,
'type':type
}
postdata=urllib.parse.urlencode(data).encode('utf-8')
try:
request=urllib.request.Request(url, postdata)
response=urllib.request.urlopen(request)
# 从结果内容中查找是否有特定字符串
if(response.read().decode('utf-8').find('login_ok')>0):
print('login_ok')
except Exception as e:
print('oops!Please check network!')
print(e) def logout():
logoutdata = {'action': 'logout'}
postdata=urllib.parse.urlencode(logoutdata).encode('utf-8')
request=urllib.request.Request(url, postdata)
response=urllib.request.urlopen(request)
print(response.read().decode('utf-8')) #根据情况解码 if __name__ == '__main__':
if len(sys.argv) == 1:
login()
else: # 如果有额外参数,则退出登录
logout()
python的语法什么的就是简洁,包含的功能也多,社区有许多人的无私奉献。缺点也是有的,比如说没有编译型语言的强大的语法分析,执行速度。写这段代码时某行因为少加了一个右括号,提示的是该行的下一行有语法错误,并未提示缺少右括号,很不人性啊,或许加上分号会好一点吧。
从上面的代码中也可以感觉到python对于网络,正则表达式等强大的支持,元组,字典等数据类型也很好用。
使用方法:linux下很容易,$ python3 net.py 再跟任意参数可注销登录,chmod +x net.py后就可以$ ./net.py,或加上做个符号链接,放在桌面。win下:可在python环境中运行,也可用Py2exe等工具做成可执行文件。有趣的是win下Python为提高运行效率,生成了.pyc类似编译的文件。
python之简单POST模拟登录的更多相关文章
- PhantomJS实现最简单的模拟登录方案
以前写爬虫,遇到需要登录的页面,一般都是通过chrome的检查元素,查看登录需要的参数和加密方法,如果网站的加密非常复杂,例如登录qq的,就会很蛋疼 在后面,有了Pyv8,就可以把加密的js文件扔给它 ...
- Python手动构造Cookie模拟登录后获取网站页面内容
最近有个好友让我帮忙爬取个小说,这个小说是前三十章直接可读,后面章节需要充值VIP可见.所以就需要利用VIP账户登录后,构造Cookie,再用Python的获取每章节的url,得到内容后再使用 PyQ ...
- python之cookie, cookiejar 模拟登录绕过验证
0.思路 如果懒得模拟登录,或者模拟登录过于复杂(多步交互或复杂验证码)则人工登录后手动复制cookie(或者代码读取浏览器cookie),缺点是容易过期. 如果登录是简单的提交表单,代码第一步模拟登 ...
- 《转载》python爬虫实践之模拟登录
有些网站设置了权限,只有在登录了之后才能爬取网站的内容,如何模拟登录,目前的方法主要是利用浏览器cookie模拟登录. 浏览器访问服务器的过程 在用户访问网页时,不论是通过URL输入域名或IP ...
- Python 爬虫实战5 模拟登录淘宝并获取所有订单
经过多次尝试,模拟登录淘宝终于成功了,实在是不容易,淘宝的登录加密和验证太复杂了,煞费苦心,在此写出来和大家一起分享,希望大家支持. 本篇内容 python模拟登录淘宝网页 获取登录用户的所有订单详情 ...
- 4、python+selenium实现12306模拟登录
简介: 这里是利用了selenium+图片识别验证,来实现12306的模拟登录,中间也参考了好几个项目,实现了这个小demo,中间也遇到了很多的坑,主要难点在于图片识别和滑动验证这两个方面,图片识别是 ...
- 在Python中用Request库模拟登录(四):哔哩哔哩(有加密,有验证码)
!已失效! 抓包分析 获取验证码 获取加密公钥 其中hash是变化的,公钥key不变 登录 其中用户名没有被加密,密码被加密. 因为在获取公钥的时候同时返回了一个hash值,推测此hash值与密码加密 ...
- 在Python中用Request库模拟登录(三):Discuz论坛(未加密,有验证码,有隐藏验证)
以Discuz的官方站为例.直接点击网页右上角的登录按钮,会弹出一个带验证码的登录窗口.输入验证码之后,会检查验证码是否正确.然后登录.首先,通过抓包分析,这些过程浏览器和服务器交换了哪些数据. 抓包 ...
- 在Python中用Request库模拟登录(一):字幕库(无加密,无验证码)
字幕库的登录表单如下所示,其中省去了无关紧要的内容: <form class="login-form" action="/User/login.html" ...
随机推荐
- python 播放 wav 文件
未使用其他库, 只是使用 pywin32 调用系统底层 API 播放 wav 文件. # Our raison d'etre - playing sounds import pywintypes im ...
- TinyFrame升级之六:全局日志的设计及实现
日志记录显然是框架设计中不可或缺的元素,在本框架中,我们将使用log4net作为日志记录的主体.下面来具体说明如何让框架继承log4net,并通过Autofac进行IOC注入. 首先,定义好我们的Lo ...
- Java的性能优化
http://www.toutiao.com/i6368345864624144897/?tt_from=mobile_qq&utm_campaign=client_share&app ...
- 为什么Javascript中的基本类型能调用方法?
我们从一道笔试题说起: var str = 'string'; str.pro = 'hello'; console.log(str.pro + 'world'); 输出啥?要理解这个问题,我们得从头 ...
- Android 开发1000问笔记
11.android使用全局变量 定义Data类继承Application 在manifest.xml中声明 http://blog.csdn.net/feiyangxiaomi/article/de ...
- iptables规则组成
一.四张表五条链 组成部分:四张表 + 5条链(Hook point) + 规则 四张表:filter nat mangle raw 五条链:PREROUTING INPUT FORWARD OUTP ...
- asp.net程序员初涉node.js
之前一直听说node.js在处理网站大规模并发上十分有用,所以有一定规模的公司都在使用node.我在工作中只用过jquery,属于那种边做功能边学习的那一种.甚至连原生的js都不太会写,只是知道语法差 ...
- [BZOJ1528][POI2005]sam-Toy Cars(贪心)
题目:http://www.lydsy.com:808/JudgeOnline/problem.php?id=1528 分析:这个贪心很好想,因为每次如果加入一种玩具,那么必须要删掉一种玩具,就变成了 ...
- matlab 中randn randi rand randsrc的用法以及区别
1,rand 生成均匀分布的伪随机数.分布在(0~1)之间 主要语法:rand(m,n)生成m行n列的均匀分布的伪随机数 rand(m,n,'double') ...
- 【JQuery】 ajax 无效的JSON基元
[如题]个人理解就是 你向传数据[josn格式]了,但是后台接受确不是json格式的 数据, 贴段代码 var strJson = '{ "usercode": "123 ...