首页编程cookiejar,cookie jar什么意思

cookiejar,cookie jar什么意思

编程之家2023-11-01139次浏览

亲爱的读者们,你是否对cookiejar和cookie jar什么意思的关系感到好奇?在本文中,我将深入探讨它们之间的联系,让你对此有更深刻的理解。

cookiejar,cookie jar什么意思

python获取cookie后怎么模拟登陆网站

运行平台:Windows

Python版本:Python3.x

IDE:Sublime text3

一、为什么要使用Cookie

Cookie,指某些网站为了辨别用户身份、进行session跟踪而储存在用户本地终端上的数据(通常经过加密)。

比如说有些网站需要登录后才能访问某个页面,在登录之前,你想抓取某个页面内容,登陆前与登陆后是不同的,或者不允许的。

cookiejar,cookie jar什么意思

使用Cookie和使用代理IP一样,也需要创建一个自己的opener。在HTTP包中,提供了cookiejar模块,用于提供对Cookie的支持。

http.cookiejar功能强大,我们可以利用本模块的CookieJar类的对象来捕获cookie并在后续连接请求时重新发送,比如可以实现模拟登录功能。该模块主要的对象有CookieJar、FileCookieJar、MozillaCookieJar、LWPCookieJar。

它们的关系:CookieJar–派生–>FileCookieJar–派生–>MozillaCookieJar和LWPCookieJar

工作原理:创建一个带有cookie的opener,在访问登录的URL时,将登录后的cookie保存下来,然后利用这个cookie来访问其他网址。查看登录之后才能看到的信息。

同样,我们以实例进行讲解,爬取伯乐在线的面向对象的漂亮MM的邮箱联系方式。

二、实战

cookiejar,cookie jar什么意思

1.背景介绍

在伯乐在线有这么一个有趣的模块,面向对象,它说白了就是提供了一个程序员(媛)网上相亲的平台。

URL:

它的样子是这样的:

可以看到,这里有很多的相亲贴,随便点进去就会有网上相亲MM的详细信息,想获取MM的联系方式,需要积分,积分可以通过签到的方式获取。如果没有登陆账户,获取联系方式的地方是这个样子的:

如果登陆了账号,获取联系方式的地方是这个样子的:

想要爬取MM的联系邮箱,就需要用到我们本次讲到的知识,Cookie的使用。当然,首先你积分也得够。

在讲解之前,推荐一款抓包工具–Fiddler,可以在Google Chrome的Google商店下载这个插件,它的样子是这样的:

可以看到,通过这个插件,我们可以很容易找到Post的Form Data等信息,很方便,当然也可以用之前讲得浏览器审查元素的方式查看这些信息。

2.过程分析

在伯乐在线首页点击登陆的按钮,Fiddler的抓包内容如下:

从上图可以看出,真正请求的url是

Form Data的内容记住,这些是我们编程需要用到的。user_login是用户名,user_pass是用户密码。

在点击取得联系邮箱按钮的时候,Fiddler的抓包内容如下:

从上图可以看出,此刻真正请求的url是

同样Form Data中内容要记下来。postId是每个帖子的id。例如,打开一个相亲贴,它的URL是28/,那么它的这个postId就是4128。为了简化程序,这里就不讲解如何自动获取这个postId了,本实例直接指定postId。如果想要自动获取,可以使用beautifulsoup解析/返回的信息。beautifulsoup的使用。有机会的话,会在后面的爬虫笔记中进行讲解。

3.测试

1)将Cookie保存到变量中

首先,我们先利用CookieJar对象实现获取cookie的功能,存储到变量中,先来感受一下:

#-*- coding: UTF-8-*-from urllib import requestfrom http import cookiejarif __name__=='__main__':#声明一个CookieJar对象实例来保存cookie

cookie= cookiejar.CookieJar()#利用urllib.request库的HTTPCookieProcessor对象来创建cookie处理器,也就CookieHandler

handler=request.HTTPCookieProcessor(cookie)#通过CookieHandler创建opener

opener= request.build_opener(handler)#此处的open方法打开网页

response= opener.open('httdu.com')#打印cookie信息

for item in cookie:

print('Name=%s'% item.name)

print('Value=%s'% item.value)1234567891011121314151617

我们使用以上方法将cookie保存到变量中,然后打印出了cookie中的值,运行结果如下:

2)保存Cookie到文件

在上面的方法中,我们将cookie保存到了cookie这个变量中,如果我们想将cookie保存到文件中该怎么做呢?方便以后直接读取文件使用,这时,我们就要用到FileCookieJar这个对象了,在这里我们使用它的子类MozillaCookieJar来实现Cookie的保存,编写代码如下:

#-*- coding: UTF-8-*-from urllib import requestfrom http import cookiejarif __name__=='__main__':#设置保存cookie的文件,同级目录下的cookie.txt

filename='cookie.txt'

#声明一个MozillaCookieJar对象实例来保存cookie,之后写入文件

cookie= cookiejar.MozillaCookieJar(filename)#利用urllib.request库的HTTPCookieProcessor对象来创建cookie处理器,也就CookieHandler

handler=request.HTTPCookieProcessor(cookie)#通过CookieHandler创建opener

opener= request.build_opener(handler)#此处的open方法打开网页

response= opener.open('h.com')#保存cookie到文件

cookie.save(ignore_discard=True, ignore_expires=True)123456789101112131415161718

cookie.save的参数说明:

ignore_discard的意思是即使cookies将被丢弃也将它保存下来;

ignore_expires的意思是如果在该文件中cookies已经存在,则覆盖原文件写入。

在这里,我们将这两个全部设置为True。

运行之后,cookies将被保存到cookie.txt文件中。我们可以查看自己查看下cookie.txt这个文件的内容。

3)从文件中获取Cookie并访问

我们已经做到把Cookie保存到文件中了,如果以后想使用,可以利用下面的方法来读取cookie并访问网站,感受一下:

#-*- coding: UTF-8-*-from urllib import requestfrom http import cookiejarif __name__=='__main__':#设置保存cookie的文件的文件名,相对路径,也就是同级目录下

filename='cookie.txt'

#创建MozillaCookieJar实例对象

cookie= cookiejar.MozillaCookieJar()#从文件中读取cookie内容到变量

cookie.load(filename, ignore_discard=True, ignore_expires=True)#利用urllib.request库的HTTPCookieProcessor对象来创建cookie处理器,也就CookieHandler

handler=request.HTTPCookieProcessor(cookie)#通过CookieHandler创建opener

opener= request.build_opener(handler)#此用opener的open方法打开网页

response= opener.open('httcom')#打印信息

print(response.read().decode('utf-8'))12345678910111213141516171819

了解到以上内容,我们那就可以开始正式编写模拟登陆伯乐在线的程序了。同时,我们也可以获取相亲MM的联系方式。

4.编写代码

我们利用CookieJar对象实现获取cookie的功能,存储到变量中。然后使用这个cookie变量创建opener,使用这个设置好cookie的opener即可模拟登陆,同笔记四中讲到的IP代理的使用方法类似。

创建cookie_test.py文件,编写代码如下:

#-*- coding: UTF-8-*-from urllib import requestfrom urllib import errorfrom urllib import parsefrom http import cookiejarif __name__=='__main__':#登陆地址

login_url='hin/admin-ajax.php'

#User-Agent信息

user_agent= r'Mozilla/5.0(Windows NT 6.2; WOW64) AppleWebKit/537.36(KHTML, like Gecko) Chrome/27.0.1453.94 Safari/537.36'

#Headers信息

head={'User-Agnet': user_agent,'Connection':'keep-alive'}#登陆Form_Data信息

Login_Data={}

Login_Data['action']='user_login'

Login_Data['redirect_url']='hobbole.com/'

Login_Data['remember_me']='0'#是否一个月内自动登陆

Login_Data['user_login']='********'#改成你自己的用户名

Login_Data['user_pass']='********'#改成你自己的密码

#使用urlencode方法转换标准格式

logingpostdata= parse.urlencode(Login_Data).encode('utf-8')#声明一个CookieJar对象实例来保存cookie

cookie= cookiejar.CookieJar()#利用urllib.request库的HTTPCookieProcessor对象来创建cookie处理器,也就CookieHandler

cookie_support= request.HTTPCookieProcessor(cookie)#通过CookieHandler创建opener

opener= request.build_opener(cookie_support)#创建Request对象

req1= request.Request(url=login_url, data=logingpostdata, headers=head)#面向对象地址

date_url='htt/wp-admin/admin-ajax.php'

#面向对象

Date_Data={}

Date_Data['action']='get_date_contact'

Date_Data['postId']='4128'

#使用urlencode方法转换标准格式

datepostdata= parse.urlencode(Date_Data).encode('utf-8')

req2= request.Request(url=date_url, data=datepostdata, headers=head) try:#使用自己创建的opener的open方法

response1= opener.open(req1)

response2= opener.open(req2)

html= response2.read().decode('utf-8')

index= html.find('jb_contact_email')#打印查询结果

print('联系邮箱:%s'% html[index+19:-2]) except error.URLError as e: if hasattr(e,'code'):

print("HTTPError:%d"% e.code) elif hasattr(e,'reason'):

print("URLError:%s"% e.reason)123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354

5.运行结果如下:

三、总结

获取成功!如果看过之前的笔记内容,我想这些代码应该很好理解吧。

cookie jar什么意思

1、cookie jar的意思是甜饼罐。

英[ˈkʊki dʒɑː(r)]

美[ˈkʊki dʒɑːr]

2、例句:Provisioning had fallen into disfavour before the crisis because it allowed financial directors to build up"cookie jar" of reserves that they later used to smooth away poor performance.

损失拨备在危机爆发前已经失宠,因为金融业董事可以借此构建储备“甜饼罐”(cookie jar),以便日后用来抵消糟糕的业绩。

One way of viewing the American Social Security Trust fund is as a massive cookie jar filled with IOUs.

美国的社会保障信托基金可看做是一个装满欠条的巨型饼干罐。

.A young boy is standing on a stool, reaching for a cookie jar, and the stool is about to tip

一个小男孩正站在凳子上,伸手够一个曲奇罐子,凳子眼看就要歪了。

golang cookiejar 怎么自己添加cookies

用GO语言(golang)写了一个简单的Web服务,但是始终无法获取Cookie的值

现象如下:

使用Chrome的开发者工具观察Cookie可以看到设置的Cookie的值

使用r.Cookie(CookieName)无法取得Cookie内容,错误信息:http: named cookie not present

在服务器端打印Requset结构,结果中没有设置的Cookie值

最后Google了一下,在golang-nuts的论坛里找到了解决方法。

根本原因在于GO语言(golang)不能获取值中带有空格的Cookie

而且会将Cookie中的一些特殊字符替换为空格

//src/pkg/net/http.go

func(c*Cookie) String() string{

...

fmt.Fprintf(&b,"%s=%s", sanitizeName(c.Name), sanitizeValue(c.Value))

...

}

...

var cookieValueSanitizer= strings.NewReplacer("\n","","\r","",";","")

...

func sanitizeValue(v string) string{

return cookieValueSanitizer.Replace(v)

}

俺就是使用了分号。。。

另外讨论中提到的不要使用指针传递http.ResponseWriter的问题,

我试了一下,使用指针传递http.ResponseWriter不会对Cookie的设置和取得产生影响

不过很多函数需要的都是http.ResponseWriter的对象,如果传指针,很多地方要写*http.ResponseWriter着实也挺麻烦

cookie jar

我不知道你要问什么,你这问题一般让人看了,不知道该怎么办。以下是我的猜测:首先,JAR是JAVA软件的一种文件格式,JAR格式的软件在手机设备上比较常见,一般主要是在手机上的游戏、电子书、及浏览器等应用程序。以下是cookies:

-----------------------------------------------------------------------------------------------------------------------

Cookie最早是网景公司的前雇员Lou Montulli在1993年3月的发明。

使用cookie实现单点登录

[1]Cookie是由服务器端生成,发送给User-Agent(一般是浏览器),浏览器会将Cookie的key/value保存到某个目录下的文本文件内,下次请求同一网站时就发送该Cookie给服务器(前提是浏览器设置为启用cookie)。Cookie名称和值可以由服务器端开发自己定义,对于JSP而言也可以直接写入jsessionid,这样服务器可以知道该用户是否合法用户以及是否需要重新登录等。

[2]务器可以利用Cookies包含信息的任意性来筛选并经常性维护这些信息,以判断在HTTP传输中的状态。Cookies最典型的应用是判定注册用户是否已经登录网站,用户可能会得到提示,是否在下一次进入此网站时保留用户信息以便简化登录手续,这些都是Cookies的功用。另一个重要应用场合是“购物车”之类处理。用户可能会在一段时间内在同一家网站的不同页面中选择不同的商品,这些信息都会写入Cookies,以便在最后付款时提取信息

-----------------------------------------------------------------------------------------------------------------------

以上来自百度百科,介绍COKOKIES的含义及用途

-----------------------------------------------------------------------------------------------------------------------常见的主流JAVA手机浏览器例如UC浏览器,Opera mini 5之类,都有cookies功能,可以保存自己某些网站的登录帐号等上面百科中介绍的东西,以方便下次登录时直接登录,免去麻烦的输入账号密码环节。上面我提到的这两款主流手机浏览器都支持cookies清理功能,访问了某些网站不想保留个人相关信息的话可以选择清理coikies,将其清理掉。还有其他JAVA手机浏览器,像GO浏览器,QQ浏览器等可能也有相关功能,具体你自己探索下。

感谢您花时间阅读本文!我们希望通过对cookiejar和cookie jar什么意思的问题进行探讨,为您提供了一些有用的见解和解决方案。如果您需要更多帮助或者有其他疑问,请不要犹豫与我们联系。

常州网络推广(常州网络推广怎么收费常州网络推广营销公司)vps云主机?云主机和vps云主机有什么区别