Python模拟登录实战(三)
目标:模拟登录知乎
代码如下:
#!/usr/bin/env python
# -*- coding:utf-8 -*-
__author__ = 'ziv·chan' import re
import time
import requests
from PIL import Image url_login = 'https://www.zhihu.com/login/phone_num' headers = {
'Host' : 'www.zhihu.com',
'Origin' : 'https://www.zhihu.com',
'Referer' : 'https://www.zhihu.com/',
'User-Agent' : 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.94 Safari/537.36'
} session = requests.session() # 获取xsrf
def get_xsrf():
url = 'https://www.zhihu.com/#signin'
html = session.get(url)
pageCode = html.text
pattern = re.compile('name="_xsrf" value="(.*?)"/>',re.S)
xsrf = re.search(pattern,pageCode).group(1)
return xsrf # 获取验证码
def get_captcha():
# 获取验证码url
t = str(int(time.time() * 1000))
url = 'http://www.zhihu.com/captcha.gif?r=%s&type=login' % t
cha = session.get(url)
with open('cha.jpg', 'wb') as f:
f.write(cha.content)
f.close()
im = Image.open('cha.jpg')
im.show()
im.close()
captcha = raw_input("请输入验证码")
return captcha form_data = {
'_xsrf' : get_xsrf(),
'password' : 'ChelseaFC.1',
'captcha' : get_captcha(),
'remember_me' : 'true',
'phone_num' : ''
}
print form_data
# 注意用法
res = session.post(url_login,data=form_data,headers=headers)
print res.json()['msg']
输出:
请输入验证码edx5
{'phone_num': '', '_xsrf': u'83488f00833e19acc086395dbce597c4', 'password': 'ChelseaFC.1', 'remember_me': 'true', 'captcha': 'edx5'}
登陆成功
难点:验证码的URL中的参数‘r’取自当前时间的时间戳(1970纪元后经过的浮点秒数)再处理。
以上。
Python模拟登录实战(三)的更多相关文章
- Python模拟登录实战(二)
目标:1.模拟登录豆瓣,2.自动更改签名和发表说说. 代码如下: #!/usr/bin/env python # -*- coding:utf-8 -*- __author__ = 'ziv·chan ...
- Python模拟登录实战(一)
今天,学习了模拟登录新浪微博.模拟登录主要有两种方式,一.利用Cookie:二.模仿浏览器的请求,发送表单. 法一: Cookie:指某些网站为了辨别用户身份而储存在用户本地终端上的数据(通常经过加密 ...
- 【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中用Request库模拟登录(三):Discuz论坛(未加密,有验证码,有隐藏验证)
以Discuz的官方站为例.直接点击网页右上角的登录按钮,会弹出一个带验证码的登录窗口.输入验证码之后,会检查验证码是否正确.然后登录.首先,通过抓包分析,这些过程浏览器和服务器交换了哪些数据. 抓包 ...
- Python模拟登录的几种方法
目录 方法一:直接使用已知的cookie访问 方法二:模拟登录后再携带得到的cookie访问 方法三:模拟登录后用session保持登录状态 方法四:使用无头浏览器访问 正文 方法一:直接使用已知的c ...
- Python模拟登录cnblogs
Python利用requests.Session对象模拟浏览器登录cnblogs request.Session对行可以跨请求的保持cookie,非常方便的用于模拟登录. cnblogs登录页面分析: ...
随机推荐
- SQL DMO のDMV
这两天对公司的一个项目进行优化,看着长长的SQL,脑袋不经有些大,一时间竟然不知道如何下手,一顿手忙脚乱后,小有成效,响应速度快了不少,同样的条件下可以做到秒级响应.闲暇时间想了想,还是得做点功课,最 ...
- 【转】 iOS如何实现表格的折叠效果?
原文 : http://blog.csdn.net/youcanping2008/article/details/9202167 一.实现原理:就是在点击表格组头视图的时候,如果该表格视图的组展开了 ...
- 基于Jquery easyui 选中特定的tab并更新
获取选中的 Tab // 获取选中的 tab panel 和它的 tab 对象 var pp = $('#tt').tabs('getSelected'); var tab = pp.panel('o ...
- Python新手学习基础之数据结构-列表1
创建一个列表 讲完了序列,我们现在来讲讲Python中最常见的一种序列数据类型--列表. 列表创建的语法是: list_name = [item1, item2, item3, .......] 列表 ...
- USACO1.5 Checker Challenge(类n皇后问题)
B - B Time Limit:1000MS Memory Limit:16000KB 64bit IO Format:%lld & %llu Description E ...
- Net Core 项目实战之权限管理系统(0)
0 前言 Net Core 项目实战之权限管理系统(0) 无中生有 0 http://www.cnblogs.com/fonour/p/5848933.html 学习的最好方法就是动手去做,这里以 ...
- Hazelcase 简介
原博客地址:http://blog.csdn.net/zhu_tianwei/article/details/47984599 Hazelcast是一种内存数据网格in-memory data gri ...
- 我的Jekyll博客
我在GitHub Page上托管的Jekyll博客地址:http://lastavenger.github.io/
- zend framework 1 连接oracle数据库的写法
1 用Zend_Db_Adapter_Pdo_Oci方式 $config =array( 'host'=>'192.168.5.40', 'port'=>'1521', 'dbname'= ...
- asp.net api 使用SSL 加密登陆 思路
< ![CDATA[ 1. 首先 是 要设置iis 2.更改站点使用htpps 3.如果使用的是 iis express 4.如果不是使用https访问.就返回提示信息, 这个要写代码了 pub ...