Python模拟登录实战(二)

目标:1、模拟登录豆瓣,2、自动更改签名和发表说说。

 

代码如下:

 1 #!/usr/bin/env python
 2 # -*- coding:utf-8 -*-
 3 __author__ = 'ziv·chan'
 4 
 5 
 6 import re
 7 import time
 8 import requests
 9 from PIL import Image
10 
11 url = 'https://www.douban.com/'
12 
13 headers = {
14         'origin' : 'https://www.douban.com',
15         'referer' : 'https://www.douban.com/',
16         'user-agent' : 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.94 Safari/537.36'
17 }
18 
19 session = requests.session()
20 
21 # 获取验证码Id
22 def get_captchaId():
23     html = session.get(url,headers=headers)
24     html.encoding = 'utf-8'
25     pageCode = html.text
26     pattern = re.compile('captcha[?]id=(.*?)&',re.S)
27     captchaId = re.findall(pattern,pageCode)[0]
28     return captchaId
29 
30 # 获取验证码图片
31 def get_captchaSolu(captchaId):
32     url_plus = 'https://www.douban.com/misc/captcha?id=%s&size=s' % captchaId
33     cha = session.get(url_plus,headers=headers)
34     with open('cap_douban.png','wb') as f:
35         f.write(cha.content)
36         f.close()
37         im = Image.open('cap_douban.png')
38         im.show()
39         im.close()
40     captcha = raw_input('请输入验证码')
41     return captcha
42 
43 # 编辑签名
44 def edit_signature(ck):
45     url = 'https://www.douban.com/j/people/143780683/edit_signature'
46     data = {
47         'ck' : ck,
48         'signature' : '人间有味是清欢。'
49     }
50     headers = {
51             'origin' : 'https://www.douban.com',
52             'referer' : 'https://www.douban.com/people/143780683/',
53             'user-agent' : 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.94 Safari/537.36',
54             'x-requested-with' : 'XMLHttpRequest'
55     }
56     session.post(url,data=data,headers=headers)
57 
58 # 编辑说说
59 def edit_words(ck):
60     url = 'https://www.douban.com/'
61     data = {
62         'ck' : ck,
63         'comment' : '天之涯,地之角,知交半零落。一斛浊酒尽余欢,今宵别梦寒。'
64     }
65     headers = {
66         'origin': 'https://www.douban.com',
67         'referer': 'https://www.douban.com/',
68         'user-agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.94 Safari/537.36'
69     }
70     session.post(url,data=data,headers=headers)
71 
72 # 获取ck
73 def get_ck():
74     url = 'https://www.douban.com/people/143780683/'
75     html = session.get(url,headers=headers)
76     pageCode = html.text
77     # print pageCode
78     pattern = re.compile('ck=(.*?)[(">)]',re.S)
79     ck = re.findall(pattern,pageCode)[0]
80     return ck
81 
82 if __name__ == '__main__':
83     captchaId = get_captchaId()
84     captcha = get_captchaSolu(captchaId)
85     form_data = {
86             'source' : 'index_nav',
87             'form_email' : '18362972928',
88             'form_password' : 'ChelseaFC.2',
89             'captcha-solution' : captcha,
90             'captcha-id' : captchaId
91     }
92     session.post('https://www.douban.com/accounts/login',data=form_data,headers=headers)
93 
94     ck = get_ck()
95     edit_signature(ck)
96     # 避免冲突,设置延时
97     time.sleep(5)
98     edit_words(ck)

 

posted @ 2016-05-19 10:35  夜雨寄北丶  阅读(1473)  评论(0编辑  收藏  举报