python编程用户登陆c_Python模拟登录实战(一)

今天,学习了模拟登录新浪微博。模拟登录主要有两种方式,一、利用Cookie;二、模仿浏览器的请求,发送表单。

法一:

Cookie:指某些网站为了辨别用户身份而储存在用户本地终端上的数据(通常经过加密)。当登录一个网站时,网站往往会要求用户输入用户名和密码,并且用户可以勾选“下次自动登录”。如果勾选了,那么下次访问同一网站时,用户会发现没输入用户名和密码就已经登录了。这正是因为前一次登录时,服务器发送了包含登录凭据(用户名加密码的某种加密形式)的Cookie到用户的硬盘上。第二次登录时,(如果该Cookie尚未到期)浏览器会发送该Cookie,服务器验证凭据,于是不必输入用户名和密码就让用户登录了。

代码格式如下:

cookie = {'Cookie' : ''}

html = requests.get(url,cookies=cookie)

法二:

通过模拟浏览器请求的方式来模拟登录微博。

1、先手动登录微博,推荐移动端(PC端用户名和密码都进行了极其复杂的加密,不推荐)

947773-20160518214729529-1627648931.png

发现表单中‘password_xxxx,vk,capId’是不知道的,那就要通过分析原始登陆界面来获取了。

947773-20160518215147138-282702292.png

947773-20160518215205435-2039928909.png

现将它们提交表单即可,代码如下:

1 #!/usr/bin/env python2 # -*- coding:utf-8 -*-

3 __author__ = 'ziv·chan'

4

5 fromlxml import etree6 fromPIL import Image7 import requests8 import re9

10

11 user_agent = 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.94 Safari/537.36'

12 referer = 'http://login.weibo.cn/login/?ns=1&revalid=2&backURL=http%3A%2F%2Fweibo.cn%2F&backTitle=%CE%A2%B2%A9&vt='

13

14 headers ={15 'User-Agent': user_agent,16 'Host' : 'login.weibo.cn',17 'Origin' : 'http://login.weibo.cn',18 'Referer': referer19 }20

21 session =requests.session()22

23 # 注意URL的选择24 url = 'https://login.weibo.cn/login/'

25 html = session.get(url,headers=headers)26 pageCode =html.text27 pattern = re.compile('password" name="(.*?)".*?name="vk" value="(.*?)".*?"capId" value="(.*?)"',re.S)28 items = re.findall(pattern,pageCode)[0]29 password,vk,capId =items30 # 上面就依次获得了password_xxxx,vk,capId31

32 cap_url = 'http://weibo.cn/interface/f/ttt/captcha/show.php?cpt=' + items[2]33 captcha = session.get(cap_url,headers=headers)34 with open('cap.png','wb') asf:35 f.write(captcha.content)36 f.close()37 im = Image.open('cap.png')38 im.show()39 im.close40 cap_code = raw_input('请输入验证码:')41

42

43 form_data ={44 'mobile' : '18362972928',45 password : 'ChelseaFC.1',46 'code': cap_code,47 'remember' : 'on',48 'backURL' : 'http%3A%2F%2Fweibo.cn%2F',49 'backTitle' : '微博',50 'tryCount' : '',51 'vk': vk,52 'capId': capId,53 'submit' : '登录'

54 }55

56

57

58 session.post(url,data=form_data,headers=headers)59

60 url_logined = 'http://weibo.cn/'

61 html_2 = session.get(url_logined)62 html_2.encoding = 'utf-8'

63 pageCode_2 =html_2.content64 Selector =etree.HTML(pageCode_2)65 content = Selector.xpath('//span[@class="ctt"]')66 for each incontent:67 text = each.xpath('string(.)')68 print text

以上。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值