精华内容
下载资源
问答
  • 今天小编就为大家分享一篇python 利用浏览器 Cookie 模拟登录的用户访问知乎的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • 爬虫爬网站不免遇到需要登录的问题. 登录的时候可能还会碰到需要填验证码的问题, 有的验证码甚至是拖动拼图来完成的....更好的方案是获取浏览器的 Cookies, 然后让 requests 这个库来直接使用登录好的 Cookie...

    爬虫爬网站不免遇到需要登录的问题. 登录的时候可能还会碰到需要填验证码的问题, 有的验证码甚至是拖动拼图来完成的. 虽然现在这些都有开源解决方案, 但是假设现在主要的精力想要放在如何解析html, 或者验证抓取算法上, 而不是通过登录验证上, 那么开源解决方案并不是最好的解决方案.更好的方案是获取浏览器的 Cookies, 然后让 requests 这个库来直接使用登录好的 Cookies. 

    获取 Chrome 浏览器的 Cookies 信息的函数
    程序在 Windows 下调试通过, 因为 C 盘需要特殊权限来读写文件, 因此程序先将 Cookies 数据库文件拷贝到当前目录. 

     import win32crypt 报错,请安装 pip install pypiwin32

    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    """
    __author__ = 'pi'
    __email__ = 'pipisorry@126.com'
    """
    import subprocess
    import sqlite3
    import win32crypt
    
    import requests
    
    SOUR_COOKIE_FILENAME = r'C:\Users\pi\AppData\Local\Google\Chrome\User Data\Default\Cookies'
    DIST_COOKIE_FILENAME = '.\python-chrome-cookies'
    
    
    def get_chrome_cookies(url):
        subprocess.call(['copy', SOUR_COOKIE_FILENAME, DIST_COOKIE_FILENAME], shell=True)
        conn = sqlite3.connect(".\python-chrome-cookies")
        ret_dict = {}
        for row in conn.execute("SELECT host_key, name, path, value, encrypted_value FROM cookies"):
            # if row[0] not in url:
            if row[0] != url:
                continue
    print(row[0])
            ret = win32crypt.CryptUnprotectData(row[4], None, None, None, 0)
            ret_dict[row[1]] = ret[1].decode()
        conn.close()
        subprocess.call(['del', '.\python-chrome-cookies'], shell=True)
        return ret_dict
    

    使用requests

     

    DOMAIN_NAME = '.jobbole.com'
    get_url = r'http://www.jobbole.com/'
    response = requests.get(get_url, cookies=get_chrome_cookies(DOMAIN_NAME))
    print(response.text)

     

    Note: 要安装requests库,安装及使用blog[python爬虫 - python requests网络请求简洁之道]

    使用urllib

     

    import urllib.request
    
    DOMAIN_NAME = '.jobbole.com'
    get_url = r'http://www.jobbole.com/'
    headers = {'Cookie': ['='.join((i, j)) for i, j in get_chrome_cookies(DOMAIN_NAME).items()][0]}
    request = urllib.request.Request(get_url, headers=headers)
    response = urllib.request.urlopen(request)
    print(response.read().decode())

     

    Note:

    1. chrome浏览器加密后的密钥存储于%APPDATA%\..\Local\Google\Chrome\User Data\Default\Login Data"下的一个SQLite数据库中,可以通过Sqlite浏览器来查看一下登陆文件中的数据。密码是调用Windows API函数CryptProtectData来加密的。这意味着,只有用加密时使用的登陆证书,密码才能被恢复。而这根本不是问题,在用户登陆环境下执行解密就OK。SQLite数据库中password_value(是二进制数据,所以SQLite浏览器不能显示)。而破解密码,只需要调用Windows API中的CryptUnprotectData函数。[谷歌Chrome浏览器是如何存储密码的][浏览器是如何存储密码的]

    2. Python为调用Windows API准备了一个完美的叫做pywin32的库。只有安装了pywin32才能调用win32crypt。安装教程见[linux和windows下安装python拓展包]

     

    当你的输出中存在“个人主页”“退出登录”字样,就说明登录成功了,否则只会有“登录”“注册”之类的字符串。

    此方法同样可以应用于知乎等等网站的登录。

    皮皮Blog

     

     

    获取 Chrome 浏览器的 Cookies 信息的的另一种方法

    chrome > 更多工具 > javascript控制台 > 对应当前页面输入document.cookie。就可以得到当前网页的cookie相关内容,复制到代码中就可以使用了。

    或者使用fiddler2,headers中找到Cookie: wordpress_logged_in_0efdf49af511fd88681529ef8c2e5fbf=*************************[cookie登录实战 - 也可以下载软件Fiddler部分]

    wordpress_logged_in_0efdf49af511fd88681529ef8c2e5fbf=pipiyn%7C1440989529%7C45ec5e30a3b24a68208815cc5c572c14

     

    get_url = r'http://www.jobbole.com/'
    cookies = {'wordpress_logged_in_0efdf49af511fd88681529ef8c2e5fbf': '***username****%*******%**********'}
    response = requests.get(get_url, cookies=cookies)
    print(response.text)

     

    Note:

    1. domain.com 是一级域名,www.domain.com 是域名 domain.com 的一个比较特殊的二级域名。他的特殊就在于现在的实践中,人们在解析域名的的时候,在惯例和默认的情况下,是把 www.domain.com 这个二级域名指向它的一级域名 domain.com。因此,现在的大部分情况下,domain.com 和 www.domain.com,都是一样的。 但是如果在解析域名的时候,没有做这样的设定,也可能就会有区别。

    2. 不过可能document.cookie 获取到 www.domain.com 的 cookies, 而不是 .domain.com 的。

    from:http://blog.csdn.net/pipisorry/article/details/47980653

    ref:Python 爬虫解决登录问题的另类方法

    转载于:https://www.cnblogs.com/decode1234/p/9240367.html

    展开全文
  • 首先在火狐浏览器上登录知乎,然后使用火狐浏览器插件 Httpfox 获取 GET 请求的Cookie,这里注意使用状态值为 200(获取成功)的某次GET. 将 Cookies 复制出来,注意这一行非常长,不要人为添加换行符。而且 Cookie ...

    首先在火狐浏览器上登录知乎,然后使用火狐浏览器插件 Httpfox 获取 GET 请求的Cookie,这里注意使用状态值为 200(获取成功)的某次GET.

    20170603191352287

    将 Cookies 复制出来,注意这一行非常长,不要人为添加换行符。而且 Cookie 中使用了双引号,最后复制到代码里使用单引号包起来。

    使用下边代码检验是否是模拟了登录的用户的请求:

    import requests

    import re

    headers = {

    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:53.0) Gecko/20100101 Firefox/53.0',

    'Cookie':'q_c1=034d8149e54a425496b7dd78be571390|1496424997000|1496424997000; r_cap_id="ZDE4MTg2NGFhMjdlNDlhMTllZWFlMmJmNjkzN2MyMzI=|1496487358|d6df41ad90d6d1a94bcbd27f2962fea69d2ec1b6"; cap_id="OTc1NmViYzJlNDZjNDVlY2E1YTZiNTZjNTFkMjZkNDY=|1496487358|52ac19a9e05ee48e155d2b4d57d414792873c062"; d_c0="AEACLgSM2guPTmR8y-3r_XCeIy3RVmMIrQ0=|1496424997"; __utma=51854390.870770348.1496424950.1496483801.1496485796.4; __utmz=51854390.1496485796.4.3.utmcsr=baidu|utmccn=(organic)|utmcmd=organic; __utmv=51854390.100--|2=registration_date=20141101=1^3=entry_date=20141101=1; _zap=5b305d08-cca7-4182-b1a8-1d8190e94a3b; aliyungf_tc=AQAAAFdv8y0T4AMAj5NK3+HVvqiouPgb; acw_tc=AQAAAHPUpVJ7LQQAj5NK35xm3ILOPUBu; _xsrf=85bb3aa751345649abdd275cb42ed704; __utmc=51854390; capsion_ticket="2|1:0|10:1496486629|14:capsion_ticket|44:ODJkNDE0MDQ1MjNmNDYwZTlhZGViZWNhNWNlZDI4Y2E=|6ded3f3e82c25526f236a4bd135705bb334e25d8df96750d89afa5ae4ab49a04"; __utmb=51854390.8.10.1496485796; __utmt=1; z_c0=Mi4wQUFCQVJBVV9BQUFBUUFJdUJJemFDeGNBQUFCaEFsVk56U0phV1FCdTNCeVduZVZ3X0hweWxnWTRIeTZmMmtyUEFn|1496487376|d6107bbdbb3ccd015757953a40ee1ecedae6834c'

    }

    r = requests.get("https://www.zhihu.com/question/20273782", headers = headers)

    text = r.text

    re.compile(r"加入知乎").search(text)如果是登录的用户,响应的内容中包含用户名。没用登录的话,响应的内容中包含 “登录”,“加入知乎” ,可以据此来判断。

    Cookie 每次登录的值都不一样,退出之后再登录需要重新采集。

    展开全文
  • 首先在火狐浏览器上登录知乎,然后使用火狐浏览器插件 Httpfox 获取 GET 请求的Cookie,这里注意使用状态值为 200(获取成功)的某次GET. 将 Cookies 复制出来,注意这一行非常长,不要人为添加换行符。而且 ...

    首先在火狐浏览器上登录知乎,然后使用火狐浏览器插件 Httpfox 获取 GET 请求的Cookie,这里注意使用状态值为 200(获取成功)的某次GET.

    将 Cookies 复制出来,注意这一行非常长,不要人为添加换行符。而且 Cookie 中使用了双引号,最后复制到代码里使用单引号包起来

    使用下边代码检验是否是模拟了登录的用户的请求:

    import requests
    import re
    headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:53.0) Gecko/20100101 Firefox/53.0',
    'Cookie':'q_c1=034d8149e54a425496b7dd78be571390|1496424997000|1496424997000; r_cap_id="ZDE4MTg2NGFhMjdlNDlhMTllZWFlMmJmNjkzN2MyMzI=|1496487358|d6df41ad90d6d1a94bcbd27f2962fea69d2ec1b6"; cap_id="OTc1NmViYzJlNDZjNDVlY2E1YTZiNTZjNTFkMjZkNDY=|1496487358|52ac19a9e05ee48e155d2b4d57d414792873c062"; d_c0="AEACLgSM2guPTmR8y-3r_XCeIy3RVmMIrQ0=|1496424997"; __utma=51854390.870770348.1496424950.1496483801.1496485796.4; __utmz=51854390.1496485796.4.3.utmcsr=baidu|utmccn=(organic)|utmcmd=organic; __utmv=51854390.100--|2=registration_date=20141101=1^3=entry_date=20141101=1; _zap=5b305d08-cca7-4182-b1a8-1d8190e94a3b; aliyungf_tc=AQAAAFdv8y0T4AMAj5NK3+HVvqiouPgb; acw_tc=AQAAAHPUpVJ7LQQAj5NK35xm3ILOPUBu; _xsrf=85bb3aa751345649abdd275cb42ed704; __utmc=51854390; capsion_ticket="2|1:0|10:1496486629|14:capsion_ticket|44:ODJkNDE0MDQ1MjNmNDYwZTlhZGViZWNhNWNlZDI4Y2E=|6ded3f3e82c25526f236a4bd135705bb334e25d8df96750d89afa5ae4ab49a04"; __utmb=51854390.8.10.1496485796; __utmt=1; z_c0=Mi4wQUFCQVJBVV9BQUFBUUFJdUJJemFDeGNBQUFCaEFsVk56U0phV1FCdTNCeVduZVZ3X0hweWxnWTRIeTZmMmtyUEFn|1496487376|d6107bbdbb3ccd015757953a40ee1ecedae6834c'
    }
    r = requests.get("https://www.zhihu.com/question/20273782", headers = headers)
    text = r.text
    re.compile(r"加入知乎").search(text)
    如果是登录的用户,响应的内容中包含用户名。没用登录的话,响应的内容中包含 “登录”,“加入知乎” ,可以据此来判断。

    Cookie 每次登录的值都不一样,退出之后再登录需要重新采集。

    展开全文
  • 首先在火狐浏览器上登录知乎,然后使用火狐浏览器插件 Httpfox 获取 GET 请求的Cookie,这里注意使用状态值为 200(获取成功)的某次GET.将 Cookies 复制出来,注意这一行非常长,不要人为添加换行符。而且 Cookie ...

    首先在火狐浏览器上登录知乎,然后使用火狐浏览器插件 Httpfox 获取 GET 请求的Cookie,这里注意使用状态值为 200(获取成功)的某次GET.

    blank.gif

    将 Cookies 复制出来,注意这一行非常长,不要人为添加换行符。而且 Cookie 中使用了双引号,最后复制到代码里使用单引号包起来。

    使用下边代码检验是否是模拟了登录的用户的请求:

    import requests

    import re

    headers = {

    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:53.0) Gecko/20100101 Firefox/53.0',

    'Cookie':'q_c1=034d8149e54a425496b7dd78be571390|1496424997000|1496424997000; r_cap_id="ZDE4MTg2NGFhMjdlNDlhMTllZWFlMmJmNjkzN2MyMzI=|1496487358|d6df41ad90d6d1a94bcbd27f2962fea69d2ec1b6"; cap_id="OTc1NmViYzJlNDZjNDVlY2E1YTZiNTZjNTFkMjZkNDY=|1496487358|52ac19a9e05ee48e155d2b4d57d414792873c062"; d_c0="AEACLgSM2guPTmR8y-3r_XCeIy3RVmMIrQ0=|1496424997"; __utma=51854390.870770348.1496424950.1496483801.1496485796.4; __utmz=51854390.1496485796.4.3.utmcsr=baidu|utmccn=(organic)|utmcmd=organic; __utmv=51854390.100--|2=registration_date=20141101=1^3=entry_date=20141101=1; _zap=5b305d08-cca7-4182-b1a8-1d8190e94a3b; aliyungf_tc=AQAAAFdv8y0T4AMAj5NK3+HVvqiouPgb; acw_tc=AQAAAHPUpVJ7LQQAj5NK35xm3ILOPUBu; _xsrf=85bb3aa751345649abdd275cb42ed704; __utmc=51854390; capsion_ticket="2|1:0|10:1496486629|14:capsion_ticket|44:ODJkNDE0MDQ1MjNmNDYwZTlhZGViZWNhNWNlZDI4Y2E=|6ded3f3e82c25526f236a4bd135705bb334e25d8df96750d89afa5ae4ab49a04"; __utmb=51854390.8.10.1496485796; __utmt=1; z_c0=Mi4wQUFCQVJBVV9BQUFBUUFJdUJJemFDeGNBQUFCaEFsVk56U0phV1FCdTNCeVduZVZ3X0hweWxnWTRIeTZmMmtyUEFn|1496487376|d6107bbdbb3ccd015757953a40ee1ecedae6834c'

    }

    r = requests.get("https://www.zhihu.com/question/20273782", headers = headers)

    text = r.text

    re.compile(r"加入知乎").search(text)

    如果是登录的用户,响应的内容中包含用户名。没用登录的话,响应的内容中包含 “登录”,“加入知乎” ,可以据此来判断。

    Cookie 每次登录的值都不一样,退出之后再登录需要重新采集。

    以上这篇python 利用浏览器 Cookie 模拟登录的用户访问知乎的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

    时间: 2019-07-09

    展开全文
  • 最近公司有个客户问题,是由于浏览器cookie中多记录过期的session id导致重复登录,普通操作无法复现,因此尝试进行cookie篡改复现问题。 方法: 首先,要知道软件定义的session名称,比如soft_cookie,获取...
  • Python3之利用Cookie模拟登录

    千次阅读 2018-05-15 12:01:00
    Python3之利用Cookie模拟登录 利用Cookie模拟登录步骤: 1. 在浏览器输入http://demo.bxcker.com,输入用户名和密码登录。 2.登录成功点“客户管理”模块。 3. 进入客户管理模块,显示客户列表。 4....
  • PHP利用cookie保存登录信息

    千次阅读 2017-06-05 15:53:06
    Cookie是在客户端由浏览器维护的存储空间,利用它可以保存用户相关信息,本博文以PHP语言为基础,给出利用cookie保存用户登录名和密码的实现例子,然而须知cookie安全性较差,在实际应用中不宜采用cookie保存私密...
  • 该资源主要利用Cookie是由服务器端生成并储存在浏览器客户端上的数据。浏览器接收到来自服务器的Cookie数据之后默认将其保存在浏览器缓存中(如果浏览器关闭,缓存消失,Cookie数据消失),只要浏览器不关闭,当我们...
  • 目前想要做一个关于京东的爬虫程序,卡在了登录验证码的地方,获取的验证码貌似是伪码,无法完成登录。于是准备利用浏览器登录后的cookie放进爬虫里面直接访问登录,不知道这样可行吗?具体实现方式是什么呢?
  • Cookie是一种服务器发送给浏览器的一组数据,用于浏览器跟踪用户,并访问服务器时保持登录状态等功能。 通常用户登录的时候,服务器根据用户名和密码在服务器数据库中校验该用户是否正确,校验正确后则可以根据用户...
  • Cookie是一种服务器发送给浏览器的一组数据,用于浏览器跟踪用户,并访问服务器时保持登录状态等功能。通常用户登录的时候,服务器根据用户名和密码在服务器数据库中校验该用户是否正确,校验正确后则可以根据用户ID...
  • 1:浏览器登录网址,进行登录,进入系统 2:获取浏览器的cookie信息,用程序开始进行数据的抓取。 遇到的问题是怎么把浏览器的cookie信息读取出来,可以使用InternetGetCookieEx这个Win API来取得httponly的Cookie...
  • 我们先使用浏览器登录退出知乎,电脑上还带着知乎的cookie,所以我们模拟登录的时候就可以跳过验证码(手动滑稽) 原理:我们使用selenium中的webdirver打开的浏览器没有浏览器记录,也就是最纯净的浏览器,所以也不会携带...
  • python利用cookie登录网站进行访问

    千次阅读 2017-09-14 15:49:42
    然而,如果换一种思路,先用浏览器登录你想访问的网站,再在浏览器的控制台里找到该网站的cookie,然后利用这个cookie进行带cookie的访问,无疑是短时间内解决此问题的好办法。但是我们都知道cookie的有效期并不长,...
  • 模拟浏览器登录淘宝

    千次阅读 2018-11-20 08:47:05
    模拟浏览器登录淘宝,使用传统的Selium以及phantomjs拖动滑块验证目前已经被淘宝识别,所以只能携带cookie登录,常用的方式就是用抓包工具抓取请求没然后添加在headers里,这里介绍的是手工登录保存cookie到本地,还是...
  • 利用cookie登录时记住密码
  • phantomJS利用cookie实现自动登录

    万次阅读 热门讨论 2017-10-18 17:51:08
    phantomjs是一个基于webkit内核的无头浏览器。即没有UI界面的一个浏览器,只是其内的点击、翻页等人为相关操作需要程序设计实现。...cookie可以用来进行自动登录,原理大致是:第一次登录成功后,服务器会生成和该用户
  • 说明:原理性的东西在后续的章节会涉及、此处讲述使用说明。...2.Cookie数据所有的浏览器端共享、Session数据由服务器开辟内存保存、每一个浏览器都有一个唯一的SessionID 人手一份 二、首先需要介绍一下FormsAu...
  • 对于selenium中进行add_cookie...2、然后利用editthiscookie插件将该网站保存在的浏览器中的所有cookie导出,然后利用python里内置的json包进行json.loads(jsonString)的加载转成一个list集合 fp = open("cooki...
  • 背景 作为一个Web工程师,最熟悉的日常工作莫过于后台接口开发与联调测试...然而,有时接口测试需要准备好登录态,或者其他状态数据,而这些数据往往就存在浏览器 Cookie 里边。结合本文介绍的工具,便可以无缝在 Po...
  • 利用cookie免账号密码登录b站

    千次阅读 2019-05-08 00:41:59
    document.cookie ="SESSDATA=49d4147c%256557247677%2Cf295e641;...登录b站,f12打开浏览器控制台,复制之前账号登录请求头里的 对应的cookie信息 添加到上面 document.cookie的参数里 然后刷新浏览器即可 ...
  • selenium用于自动测试场景比较多,但是由于它本身就是基于浏览器操作模拟的,所以可以用来获取网页数据,这里的数据就不是海量的泛爬取了,而是有目的,有周期的重复爬取。 安装 安装的主要问题就是webdriver的版本...
  • 在javaweb开发中Cookie被当做java对象在web服务器端创建,并由web服务器发送给特定浏览器客户端,并且WEB服务器可以向同一个浏览器客户端上同时发送多个Cookie,每一个Cookie对象都由name和value组成,name和value...

空空如也

空空如也

1 2 3 4 5 ... 19
收藏数 368
精华内容 147
关键字:

利用cookie浏览器登录