python读取cookies
‘壹’ 使用python怎么获取京东网站cookie进行登录
# -*- coding: utf-8 -*-
# !/usr/bin/python
import os
import urllib2
import urllib
import cookielib
import re
import sys
from bs4 import BeautifulSoup
‘‘‘
编码方式的设置,在中文使用时用到中文时的处理方式
‘‘‘
default_encoding = "utf-8"
if sys.getdefaultencoding() != default_encoding:
reload(sys)
sys.setdefaultencoding("utf-8")
def getHtml(url,data={}):
if(data=={}):
req=urllib2.Request(url)
else:
req=urllib2.Request(url,urllib.urlencode(data))
html=urllib2.urlopen(req).read()
return html
try:
cookie = cookielib.CookieJar()
cookieProc = urllib2.HTTPCookieProcessor(cookie)
except:
raise
else:
opener = urllib2.build_opener(cookieProc)
opener.addheaders = [(‘User-Agent‘,‘Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.64 Safari/537.11‘)]
urllib2.install_opener(opener)
auth_url=‘‘
#auth_url = ‘‘
home_url=‘‘
#home_url = ‘;
url = ""
login=getHtml(url)
#print login
loginSoup = BeautifulSoup(login,‘html.parser‘)
#查找登陆参数中的uuid
uuid = loginSoup.find_all("form")[0].find_all("input")[0][‘value‘]
print uuid
clrName=loginSoup.find_all("form")[0].find_all("input")[6][‘name‘]
clrValue=loginSoup.find_all("form")[0].find_all("input")[6][‘value‘]
‘‘‘这俩参数不是必须。。。。
eid=loginSoup.find_all("form")[0].find_all("input")[4][‘value‘]
fp=loginSoup.find_all("form")[0].find_all("input")[5][‘value‘]
‘‘‘
#下载验证码图片:
checkPicUrl = loginSoup.find_all("div",id="o-authcode")[0].find_all("img")[0][‘src2‘]
req = getHtml(checkPicUrl)
checkPic = open("checkPic.jpg","w")
checkPic.write(req)
checkPic.close()
#调用mac系统的预览(图像查看器)来打开图片文件
os.system(‘open /Applications/Preview.app/ checkPic.jpg‘)
checkCode = raw_input("请输入弹出图片中的验证码:")
#登录URL
url = ""
# 登陆用户名和密码
postData = {
‘loginname‘:‘你自己的账号‘,
‘nloginpwd‘:‘你自己的密码‘,
‘loginpwd‘:‘你自己的密码‘,
# ‘machineNet‘:‘‘,
# ‘machineCpu‘:‘‘,
# ‘machineDisk‘:‘‘,
str(clrName):str(clrValue),
‘uuid‘:uuid,
‘authcode‘: checkCode
}
passport=getHtml(url,postData)
print passport
# 初始化一个CookieJar来处理Cookie
‘‘‘
cookieJar=cookielib.CookieJar()
# 实例化一个全局opener
opener=urllib2.build_opener(urllib2.HTTPCookieProcessor(cookieJar))
# 获取cookie
req=urllib2.Request(auth_url,post_data,headers)
result = opener.open(req)
# 访问主页 自动带着cookie信息
‘‘‘
result = opener.open(‘‘)
# 显示结果
#print result.read()
soup=BeautifulSoup(result,‘html.parser‘)
#昵称
nickName = soup.find_all("input", id="nickName")[0]["value"]
print "nickName:",
print nickName
‘贰’ 如何python中读取https传输中的cookie
在response的header里面,会有cookie的设置,response.headers['set-cookie']便可以看到
‘叁’ python如何保存cookie到本地
python如何保存cookie到本地的方法:
第一次访问页面后,Server可将Cookie信息加入HTTP Header返回给浏览器,浏览器会自动将这些信息保存在本地;
当再次访问相同域名时,浏览器将对应Cookie信息随请求一起发送,Server端可读取这些信息进行处理。
Cookie可设置过期时间,到期后由浏览器自动删除;
当我们要返回页面时,首先输出如下:
[python] view plain
print "Content-type: text/plain\n"
它其实是一个HTTP Header, 连续碰到两个换行表示HTTP Header部分结束,剩余部分将被做为数据处理;
包含了Cookie后输出大致如下:
[python] view plain
print "Content-Type: text/html"
print "Set-Cookie: session=12345"
print # 多加一个换行表示HTTP Header部分结束
代码:
setcookie.py
[python] view plain
#!/usr/bin/env python
import Cookie
import datetime
import random
expiration = datetime.datetime.now() + datetime.timedelta(days=30)
cookie = Cookie.SimpleCookie()
cookie["session"] = random.randint(0,1000000000)
cookie["session"]["domain"] = "localhost"
cookie["session"]["path"] = "/"
cookie["session"]["expires"] = \
expiration.strftime("%a, %d-%b-%Y %H:%M:%S PST")
print "Content-type: text/plain"
print cookie.output()
print
print "Cookie set with: " + cookie.output()
getcookie.py
[python] view plain
#!/usr/bin/env python
import Cookie
import os
print "Content-type: text/plain\n"
try:
cookie = Cookie.SimpleCookie(os.environ["HTTP_COOKIE"])
print "session = " + cookie["session"].value
except (Cookie.CookieError, KeyError):
print "session cookie not set!"
‘肆’ Python通过urllib.request获取【服务器返回】的cookie
F12是在浏览器里看的吧,两个cookie应当一个是服务器发给你的,让你修改你本地的,另一个是你本地的,要发给服务器的
一般都是python自己维护cookie,不用写代码去处理 除非想手动修改,我写过的python自处理cookie的代码
def__set_cookie(self):
"""
设置Cookie
:return:
"""
self.cj=http.cookiejar.MozillaCookieJar('Cookie.txt')
opener=urllib.request.build_opener(urllib.request.HTTPCookieProcessor(self.cj))
urllib.request.install_opener(opener)
‘伍’ python的requests库r.headers取不到cookies,但是url lib库的response.header就有,为什么
cookies不是那么取的。。
用self.get_cookie("")
‘陆’ 请问【已解决】Python中如何获得访问网页所返回的cookie
需要先获得最开始登陆的网络空间网页所返回的cookie。
【解决过程】
1.搜了一番,最后参考这个:
利用Python抓取需要登录网站的信息
实现了对应的代码:
‘柒’ python 第三方库 requests 怎么打印cookies
从.cookies.get_dict()中获取就可以了。
import request
ssession = requests.Session()
session.cookies.get_dict()
response = session.get('http://google.com')
session.cookies.get_dict()
{'PREF': 'ID=5514c728c9215a9a:FF=0:TM=1406958091:LM=1406958091:S=KfAG0U9jYhrB0XNf', 'NID': '67=aj3db_V37NjvshV-eoQdA8u43M8UwHMqZdL-S2gjho8j0-Fe1XuH5wYr9v'}
‘捌’ Python 使用cookie登陆的问题
cookie是有过期时间的,网站设置了有个值,所以到了过期时间就会失效
退出了的话服务器会知道你的cookie里session已经过期。
大概有,比如经常保持此会话活动状态。
不过最好还是把你的代码改进为脚本自动登录获取cookie,Python的requests库文档里有讲怎么配置登录:http://cn.python-requests.org/zh_CN/latest/
‘玖’ python里有没有简单方法读ie的cookie信息
ck = cookielib.MozillaCookieJar() ck.load('#cookpath') opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(ck))
‘拾’ 想用python语句获取界面cookie中的sessionid,百度了代码获取出来的却是页面架构,向大神求助
#importcookielib
fromurllib2importRequest,build_opener,HTTPCookieProcessor,HTTPHandler
importtime,urllib
#cj用来保存访问过程中的cookie,用它来初始化opener,以后每次用
#opener来访问url时,都会使用该cookie。这样每次请求的一些变量都
#会相同,如:sessionid
cj=cookielib.CookieJar()
opener=build_opener(HTTPCookieProcessor(cj),HTTPHandler)
f=opener.open("http://10.23.51.20:8001/ok.html")
html=f.read()
print"Thecookiesare:"
forcookieincj:
printcookie
time.sleep(1)
foriinrange(10):
f=opener.open("http://10.23.51.20:8001/ok.html")
html=f.read()
print"Thecookiesare:"
forcookieincj:
printcookie
time.sleep(10)