Python模拟登录实战(二)
目标:1、模拟登录豆瓣,2、自动更改签名和发表说说。
代码如下:
#!/usr/bin/env python
# -*- coding:utf-8 -*-
__author__ = 'ziv·chan' import re
import time
import requests
from PIL import Image url = 'https://www.douban.com/' headers = {
'origin' : 'https://www.douban.com',
'referer' : 'https://www.douban.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() # 获取验证码Id
def get_captchaId():
html = session.get(url,headers=headers)
html.encoding = 'utf-8'
pageCode = html.text
pattern = re.compile('captcha[?]id=(.*?)&',re.S)
captchaId = re.findall(pattern,pageCode)[0]
return captchaId # 获取验证码图片
def get_captchaSolu(captchaId):
url_plus = 'https://www.douban.com/misc/captcha?id=%s&size=s' % captchaId
cha = session.get(url_plus,headers=headers)
with open('cap_douban.png','wb') as f:
f.write(cha.content)
f.close()
im = Image.open('cap_douban.png')
im.show()
im.close()
captcha = raw_input('请输入验证码')
return captcha # 编辑签名
def edit_signature(ck):
url = 'https://www.douban.com/j/people/143780683/edit_signature'
data = {
'ck' : ck,
'signature' : '人间有味是清欢。'
}
headers = {
'origin' : 'https://www.douban.com',
'referer' : 'https://www.douban.com/people/143780683/',
'user-agent' : 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.94 Safari/537.36',
'x-requested-with' : 'XMLHttpRequest'
}
session.post(url,data=data,headers=headers) # 编辑说说
def edit_words(ck):
url = 'https://www.douban.com/'
data = {
'ck' : ck,
'comment' : '天之涯,地之角,知交半零落。一斛浊酒尽余欢,今宵别梦寒。'
}
headers = {
'origin': 'https://www.douban.com',
'referer': 'https://www.douban.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.post(url,data=data,headers=headers) # 获取ck
def get_ck():
url = 'https://www.douban.com/people/143780683/'
html = session.get(url,headers=headers)
pageCode = html.text
# print pageCode
pattern = re.compile('ck=(.*?)[(">)]',re.S)
ck = re.findall(pattern,pageCode)[0]
return ck if __name__ == '__main__':
captchaId = get_captchaId()
captcha = get_captchaSolu(captchaId)
form_data = {
'source' : 'index_nav',
'form_email' : '',
'form_password' : 'ChelseaFC.2',
'captcha-solution' : captcha,
'captcha-id' : captchaId
}
session.post('https://www.douban.com/accounts/login',data=form_data,headers=headers) ck = get_ck()
edit_signature(ck)
# 避免冲突,设置延时
time.sleep(5)
edit_words(ck)
Python模拟登录实战(二)的更多相关文章
- Python模拟登录实战(一)
今天,学习了模拟登录新浪微博.模拟登录主要有两种方式,一.利用Cookie:二.模仿浏览器的请求,发送表单. 法一: Cookie:指某些网站为了辨别用户身份而储存在用户本地终端上的数据(通常经过加密 ...
- Python模拟登录实战(三)
目标:模拟登录知乎 代码如下: #!/usr/bin/env python # -*- coding:utf-8 -*- __author__ = 'ziv·chan' import re impor ...
- Python入门:模拟登录(二)或注册之requests处理带token请求
转自http://blog.csdn.net/foryouslgme/article/details/51822209 首先说一下使用Python模拟登录或注册时,对于带token的页面怎么登录注册模 ...
- 【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爬虫-百度模拟登录(二)
上一篇-Python爬虫-百度模拟登录(一) 接上一篇的继续 参数 codestring codestring jxG9506c1811b44e2fd0220153643013f7e6b1898075 ...
- Python模拟登录的几种方法
目录 方法一:直接使用已知的cookie访问 方法二:模拟登录后再携带得到的cookie访问 方法三:模拟登录后用session保持登录状态 方法四:使用无头浏览器访问 正文 方法一:直接使用已知的c ...
随机推荐
- 关于DOS下启动MySQL时提示服务名无效
主要原因:启动时:net start mysql 而打开服务后发现,本地服务中mysql这个服务实际名字为mysql55,故启动语句应为:net start mysql55: 以下摘自课程提问: 你 ...
- sql 删除多项
delete from 表名 where 字段 in(值,值,值.......)
- UFLDL课程学习(二)
章节地址:http://ufldl.stanford.edu/tutorial/supervised/LogisticRegression/ 章节名称:逻辑回归 (Logisitic Regressi ...
- 将图片转换为Base64
string Imagefilename 硬盘路径 protected string ImgToBase64String(string Imagefilename) { try { Bitmap ...
- LINQ对List列表随机排序,取N条数据
List<Art_Search> artList=new List<Art_Search>(); artList=artList.OrderBy(s => Guid.Ne ...
- JavaWeb 之 重复提交表单和验证码相关的问题!
下面我们首先来说一下表单的重复提交问题,我们知道在真实的网络环境中可能受网速带宽的原因会造成页面中表单在提交的过程中出现网络的延迟等问题,从而造成多次提交的问题!下面我们就具体来分析一下造成表单提交的 ...
- Java学习笔记(1):注释规范
注释规范 1. 类注释 在每个类前面必须加上类注释,注释模板如下: 2. 属性注释 在每个属性前面必须加上属性注释,注释模板如下: 3. 方法注释 在每个方法前面必须加上方法注释,注释模板 ...
- 高放的c++学习笔记之重载运算与类型转换
▲基本概念 (1)重载运算符是具有特殊名字的函数,它们的名字又operator和其后要定义的运算符号共同构成.. (2)对于一个运算符号来说它或者是类的成员,或者至少含有一个类类型的参数. (3)我们 ...
- 数据库SQLite在Qt5+VS2012使用规则总结---中文乱码
VS2012默认格式为 "GB2312-80",而有时我们用到字符串需要显示中文时,就会出现乱码.下面仅就Qt5和VS2012中使用数据库SQLite时,做一个简单的备忘录 #in ...
- 转:测试计划(出处:: 51Testing软件测试网--zfx081)
测试计划阶段主要处于测试的先期准备阶段,在该阶段中主要是对将要进行的测试工作做一个整体的规划.包括一下内容: 1.测试目的和测试项目简介. 1.1测试目的:××××系统的测试计划有助于实现一下目标 ...