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 ...
随机推荐
- Linux下python升级
Centos即使用Yum更新也是Python2.6.6所以需要升级到Python2.7.8 1.先下载源码包 1 wget https://www.python.org/ftp/python/2.7. ...
- js 获取元素在页面上的偏移量的最佳方式
使用js制作效果时,我们常常要获取某个元素在页面上的偏移量(例如tip提示框功能).而获取偏移量可以直接获取相对于document的偏移量,也可以获取相对与视口的偏移量(viewpoint)加上页面滚 ...
- elasticsearch中的概念简述
Near Realtime(NRT) Elasticsearch接近实时.从为一个文档建立索引到可被搜索,正常情况下有1秒延迟. Cluster 一个集群有一个唯一的名字,默认是"elast ...
- WEB文件上传下载功能
WEB文件上传下载在日常工作中经常用到的功能 这里用到JS库 http://files.cnblogs.com/meilibao/ajaxupload.3.5.js 上传代码段(HTML) <% ...
- java分布式开发,什么是分布式开发
就是同一个服务,把数据库的不同部分分开建立到不同的服务器上.以缓解数据库大量数据访问的压力.很多大公司的业务量比较大,每天的访问量都达到几百万上千万,甚至上亿的访问量,在访问量不是很大的情况下,是可以 ...
- JavaWeb学习笔记之Servlet(二)
1. GenericServlet 抽象类: 1). 是一个 Serlvet. 是 Servlet 接口和 ServletConfig 接口的实现类. 但是一个抽象类. 其中的 service 方法 ...
- Ajax--JavaScript实现
Ajax:一种不用刷新整个页面便可与服务器通讯的办法 Ajax实现的步骤: 1.创建XMLHttpRequest对象 2.服务器向浏览器响应请求(注册监听) 3.浏览器与服务器建立连接 4.浏览器向服 ...
- nodejs调试
1.通过debug命令进行调试 node debug app.js 运行的结果: 在debug状态下输入"repl"命令可以评估变量和表达式的值 按下'CTRL+C'可以退出rep ...
- validate插件深入篇
1.使用valid()来验证表单是否填写正确: <form id="mainform"> <button id="check">< ...
- nginx重定向规则详细介绍
为何要使用301重定向 在网站建设中需要网页重定向的情况很多:如网页目录结构变动,网页重命名.网页的扩展名改变.网站域名改变等.如果不做重定向,用户的收藏和搜索引擎数据库中的旧地址只能让访客得到一个4 ...