Python模拟登录实战(一)
今天,学习了模拟登录新浪微博。模拟登录主要有两种方式,一、利用Cookie;二、模仿浏览器的请求,发送表单。
法一:
Cookie:指某些网站为了辨别用户身份而储存在用户本地终端上的数据(通常经过加密)。当登录一个网站时,网站往往会要求用户输入用户名和密码,并且用户可以勾选“下次自动登录”。如果勾选了,那么下次访问同一网站时,用户会发现没输入用户名和密码就已经登录了。这正是因为前一次登录时,服务器发送了包含登录凭据(用户名加密码的某种加密形式)的Cookie到用户的硬盘上。第二次登录时,(如果该Cookie尚未到期)浏览器会发送该Cookie,服务器验证凭据,于是不必输入用户名和密码就让用户登录了。
代码格式如下:
cookie = {'Cookie' : ''}
html = requests.get(url,cookies=cookie)
法二:
通过模拟浏览器请求的方式来模拟登录微博。
1、先手动登录微博,推荐移动端(PC端用户名和密码都进行了极其复杂的加密,不推荐)

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


现将它们提交表单即可,代码如下:
#!/usr/bin/env python
# -*- coding:utf- -*-
__author__ = 'ziv·chan' from lxml import etree
from PIL import Image
import requests
import re user_agent = 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.94 Safari/537.36'
referer = 'http://login.weibo.cn/login/?ns=1&revalid=2&backURL=http%3A%2F%2Fweibo.cn%2F&backTitle=%CE%A2%B2%A9&vt=' headers = {
'User-Agent' : user_agent,
'Host' : 'login.weibo.cn',
'Origin' : 'http://login.weibo.cn',
'Referer' : referer
} session = requests.session() # 注意URL的选择
url = 'https://login.weibo.cn/login/'
html = session.get(url,headers=headers)
pageCode = html.text
pattern = re.compile('password" name="(.*?)".*?name="vk" value="(.*?)".*?"capId" value="(.*?)"',re.S)
items = re.findall(pattern,pageCode)[]
password,vk,capId = items
# 上面就依次获得了password_xxxx,vk,capId cap_url = 'http://weibo.cn/interface/f/ttt/captcha/show.php?cpt=' + items[]
captcha = session.get(cap_url,headers=headers)
with open('cap.png','wb') as f:
f.write(captcha.content)
f.close()
im = Image.open('cap.png')
im.show()
im.close
cap_code = raw_input('请输入验证码:') form_data = {
'mobile' : '',
password : 'ChelseaFC.1',
'code' : cap_code,
'remember' : 'on',
'backURL' : 'http%3A%2F%2Fweibo.cn%2F',
'backTitle' : '微博',
'tryCount' : '',
'vk' : vk,
'capId' : capId,
'submit' : '登录'
} session.post(url,data=form_data,headers=headers) url_logined = 'http://weibo.cn/'
html_2 = session.get(url_logined)
html_2.encoding = 'utf-8'
pageCode_2 = html_2.content
Selector = etree.HTML(pageCode_2)
content = Selector.xpath('//span[@class="ctt"]')
for each in content:
text = each.xpath('string(.)')
print text
以上。
Python模拟登录实战(一)的更多相关文章
- Python模拟登录实战(三)
目标:模拟登录知乎 代码如下: #!/usr/bin/env python # -*- coding:utf-8 -*- __author__ = 'ziv·chan' import re impor ...
- Python模拟登录实战(二)
目标:1.模拟登录豆瓣,2.自动更改签名和发表说说. 代码如下: #!/usr/bin/env python # -*- coding:utf-8 -*- __author__ = 'ziv·chan ...
- 【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模拟登录的几种方法
目录 方法一:直接使用已知的cookie访问 方法二:模拟登录后再携带得到的cookie访问 方法三:模拟登录后用session保持登录状态 方法四:使用无头浏览器访问 正文 方法一:直接使用已知的c ...
- [Python] 模拟登录网站(。。为了之后操作数据。。)
我司的内部管理(Web)系统(日报)着实..(mafan).. 所以,就想自己动手增加一下便利性. 计划是, - 桌面程序 用来方便记录(按自己格式,数据随时保存到sqlite中,备用) 通过一览来确 ...
- Python模拟登录cnblogs
Python利用requests.Session对象模拟浏览器登录cnblogs request.Session对行可以跨请求的保持cookie,非常方便的用于模拟登录. cnblogs登录页面分析: ...
随机推荐
- IIS配置
IIS配置文档: 1.安装IIS.控制面板→程序→打开关闭Windows功能,Web管理服务和万维网服务都勾上. 2.部署网站:ASP.Net项目的发布:项目中点右键“发布”,选择“文件系统”,发布到 ...
- ORACLE安装过程中检查步骤出现的错误和解决方法【转】
Checking operating system requirements ...Expected result: One of redhat-3,redhat-4,SuSE-9,asianux-1 ...
- mysql死锁--源于外键关联
死锁 存在于行级锁 存在的条件 1.资源只能同时被一个线程占有 2.资源占有不能被强制剥夺 3.请求和保持占有(在请求占有资源的同时能保持现有资源的占有) 4.死循环(一般做程序的人最关注的点) 一到 ...
- 查看sqlserver默认的编码格式
SQL语句:SELECT COLLATIONPROPERTY('Chinese_PRC_Stroke_CI_AI_KS_WS', 'CodePage') 936 简体中文GBK 950 繁体中文BIG ...
- (四 )Knockout - ViewModel 的使用3 - 对象属性变化的实时更新
ko.observableArray()就可以自动检测属性,其实他只是监控对象,而不是对象中的属性 使用ko.observable()进行处理 DEMO1 实时更新属性 //定义user数据对象 va ...
- gui小日历
package MyCal; import java.awt.EventQueue; import javax.swing.JFrame; import javax.swing.JPanel; imp ...
- Android常用URI以及URI简介
Android常用URI android管理联系人的URI: ContactsContract.Contacts.CONTENT_URI 管理联系人的Uri ContactsContract.Comm ...
- 使用 ADD-ON SDK 开发 基于 Html JQuery 和 CSS 的 firefox 插件入门教程1: 创建一个简单的 Add-on
[本文转载自http://sixpoint.me/942/implementing-simple-addon/] 实现一个简单的插件 教程的这个部分带你使用 SDK 来实现, 运行并打包一个插件. 这 ...
- linux上ln命令详细说明
ln是linux中又一个非常重要命令,它的功能是为某一个文件在另外一个位置建立一个同不的链接,这个命令最常用的参数是-s,具体用法是:ln –s 源文件 目标文件. 当我们需要在不同的目录,用到相同的 ...
- Windows 7 Apache下计算机无法访问局域网网站的问题
在Windows 7系统下,由于安全限制问题,本机搭建的网站,局域网内其它计算机是无法访问的. 要解决这个问题,只需要在防火墙加入自建规则便可以了,具体步骤如下: 控制面板=>Windows防火 ...