Chrome &&IE获取cookies总结

Chrome && IE 获取cookies 方法总结

本篇旨在解决一些爬虫爬取某些需要登录态的网站无法获取登录态的问题。

在有些情况下会遇到模拟浏览器都无法操作的网站,那些网站的安全防御做的令人发指,这时候还想要获取他们的登录cookies实在是让人有骂娘的冲动,但是呢,冲动归冲动,网站还是要爬的,数据还是要获取的,登录态就还是要解决的。

那么既然试过了模拟浏览器总是会被识别出来,何不试试直接模拟真正的人工操作呢,我们的爬虫用Python来完成,所以,方法自然就来了,python有很多对windows的操作,模拟出来就是人工的操作,例如强大的pywin32、实用的pyautogui等等,都可以达到这样的目的。

但是说来说去都还是模拟操作,具体的登录态到底该怎么获取呢?下面几行代码全部展现(此处介绍两种浏览器的获取方法):
首先模拟完成登录操作以后:
这时候,按道理来说,我们的浏览器已经获取到登录的cookies了,但是具体在哪保存呢?先说ie的,ie浏览器虽说古老,但是就是因为古老,才会有些公司喜欢拿他们来做安全防御,这样用的人少,针对性产生的插件等等就少,比如某些bank系统,具体就不说了,由于ie的登录态保存地点简单,就不上代码,主要难点在于登录,这个以后讲,主要说下保存在哪:

细心的童鞋们会发现ie的debug工具后又个菜单栏,有个查看cookies。。。

下面说chrome浏览器,这个浏览器虽说大部分人知道在哪里看cookie但是真正在代码中获取的时候却不好获取,下面直接上代码:

from win32.win32crypt import CryptUnprotectData

def get_cks(sql):
	"""获取cookies"""
	with sqlite3.connect(self.cookiepath) as conn:
        cu = conn.cursor()
        cookies = {name: CryptUnprotectData(encrypted_value)[1].decode() for host_key, name, encrypted_value in
                   cu.execute(sql).fetchall()}
    return cookies

def getcookiefromchrome(self, host=None, ck_type='str'):
	"""根据类型获取cookies"""
	sql = "select host_key,name,encrypted_value from cookies where host_key='%s'"
	ck = {}
	if isinstance(host, list):
	    for h in host:
            ck.update(self.get_cks(sql % h))
	    else:
	        ck.update(self.get_cks(sql % host))
	    str_ck = '; '.join(['%s=%s' % (name, value) for name, value in ck.items()])
	    return ck if ck_type == 'json' else str_ck

def delete_cookie(self, host):
    sql = "delete from cookies where host_key='%s'" % host
    with sqlite3.connect(self.cookiepath) as conn:
        cu = conn.cursor()
        cu.execute(sql)
        conn.commit()

def delete_all_cookies(self, hosts):
	"""有些时候我们还需要一个干净的环境"""
    if isinstance(hosts, list):
        for h in hosts:
            self.delete_cookie(h)
    else:
        self.delete_cookie(hosts)
  • 此处几道坑
  • 要删除或获取cookie,首先要知道cookie的host或域名
  • 获取或删除的时候不能打开浏览器,否则io错误

刚过12点,还有剩下的明天补。。。


来填坑了。

IE 获取cookie

此处IE获取cookie 的方法目前只在win7 上适用,win10上是否可以还有待尝试。废话不说,直接上干货。。
首先在登录一个网站过后,此网站的cookie信息一般就已经被写入本地文件了,此时在本地文件直接搜索肯定不理智,
正确的做法是这样的:

  • 打开调试工具
  • 菜单栏中找到缓存标签
  • 点开后找到- 查看cookie信息
  • 然后会打开一个新的页面,内容就是一xml方式显示的cookie信息了
  • 最后在地址栏中就会发现,此时已经不是正常的网址了,里面是正常的文件路径信息
  • 接下来有了文件路径信息我就不说了,大家只要找到对应文件就行了

下面附上几张操作图片
Chrome &&IE获取cookies总结_第1张图片
Chrome &&IE获取cookies总结_第2张图片

你可能感兴趣的:(spider)