python 3爬虫類-ブラウザクッキーでログイン


http://blog.csdn.net/pipisorry/article/details/47980653
爬虫類爬虫類爬虫類爬虫類爬虫類爬虫類爬虫類爬虫類爬虫類爬虫類爬虫類爬虫類爬虫類爬虫類爬虫類爬虫類爬虫類爬虫類爬虫類爬虫類爬虫類爬虫類爬虫類爬虫類爬虫類爬虫類爬虫類爬虫類爬虫類爬虫類爬虫類爬虫類爬虫類爬虫類爬虫類爬虫類爬虫類爬虫類爬虫類爬虫類爬虫類オープンソースソリューションは最良のソリューションではありません.より良いソリューションはブラウザのCookiesを取得し、requestsというライブラリにログインしたCookiesを直接使用させることです. 
ChromeブラウザのCookies情報を取得する関数プログラムはWindowsの下でデバッグに合格し、Cディスクは特殊な権限を必要としてファイルを読み書きするため、プログラムはまずCookiesデータベースファイルを現在のディレクトリにコピーする. 
#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
__author__ = 'pi'
__email__ = '[email protected]'
"""
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%..LocalGoogleChromeUser DataDefaultLogin Data"の のSQLiteデータベースに されており、Sqliteブラウザでログインファイルのデータを できます.パスワードはWindowsを び すことです API CryptProtectDataで されています.これは、 に したログイン でのみパスワードが されることを します.これは ではありません.ユーザーのログイン で を すればOKです.SQLiteデータベースではpassword_value(バイナリデータなのでSQLiteブラウザでは できません).パスワードを するには、Windowsを び すだけです APIのCryptUnprotectData .[Google Chromeブラウザでパスワードを する ][ブラウザでパスワードを する ]
2. PythonはWindowsを び す APIにはpywin 32という なライブラリが されています.pywin 32をインストールしてこそwin 32 cryptを び すことができます.インストールチュートリアルは[linuxとwindowsの でpython パッケージをインストールする]を してください.
に「 ページ」「ログインを 」という がある は、ログインに したことを します.そうしないと、「ログイン」「 」などの しかありません.
この は、 などのサイトのログインにも できます.
Blog
ChromeブラウザのCookies を する の
chrome>その のツール>javascriptコンソール> のページに してdocument.cookieを します. のページのcookieに する が られ、コードにコピーして できます.
またはfiddler 2を して、headersでCookie:wordpress_logged_in_0 efdf 49 af 511 fd 88681529 ef 8 c 2 e 5 fbf=*********************[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は1 ドメイン 、www.domain.comはドメイン domain.comの1つの な2 ドメイン である. の なのは の の で、 がドメイン を する 、 とデフォルトの の で、www.domain.comという2 ドメイン をその1 ドメイン domain.comに す.そのため、 の の の で、domain.comとwww.domain.com、 じです. しかしドメイン を するときに、このような をしていないと、 いがあるかもしれません.
2. ただし、document.cookieは.domain.comではなくwww.domain.comのcookiesを する があります.
from:http://blog.csdn.net/pipisorry/article/details/47980653
ref:Python の を する の