爬虫類のPythonチュートリアル:リクエストシミュレート着陸githubの

1.クッキーはじめに

HTTPプロトコルはステートレスです。そのため、他の手段を用いた場合、リモートサーバーとクライアントが通信を行っていたものを前に知ることができません。クッキーはの一つである「他の手段。」クッキーA一般的なアプリケーションのシナリオは、サイトにログインしているユーザーを記録するために使用されます。

 

 

  1. 成功したユーザーがログインした後、次のサーバは、(通常は暗号化された)クッキーファイルを送信します。
  2. クライアント(通常はWebブラウザ)は、受信したファイルのCookieを保存します。
  3. クッキーを送信するために、サーバーへの次回のクライアントが接続するには、サーバはその意味を確認し、サーバーにファイル(再度ログインを避けるために)記録さリストア。

2。 requests使用cookie

クライアントとしてブラウザがリモートサーバーに接続されている場合、リモートサーバーは、セッションIDを生成するために必要な、そしてクッキーにブラウザに添付されます。次回は、しかし限り、クッキーの接続、ブラウザおよびリモートサーバとして、このセッションIDを使用します;とブラウザが適切なクッキーを維持するために、サーバとのコラボレーション自動的になります。

では   requests 、中央だけでなく。私たちは、作成することができます   requests.Session 生成されたリモートサーバーと通信し、後のセッションでは、クッキーを  requests 自動的に私たちのためのセーフガードを。

3. POSTフォーム

POSTメソッドは、フォームの形でリモート・サーバに送信されるユーザデータの集合であってもよいです。フォームの内容に応じて、リモートサーバ、対応する移動を受信した後。

呼び出され  requests POSTメソッドを使用することができたときに   data 一つの構造パラメータPythonの辞書を受信します。 requestsPythonの辞書が自動的にフォームの実際の内容にシリアライズ。例えば:

インポート要求

cs_url = 'http://httpbin.org/post' 
my_data = { 
    'KEY1': '値1'、
    'KEY2': '値2' 
} 

R = requests.post(cs_url、データ= my_data)
印刷r.content

GitHubの上で現実的なシミュレーションのログをお試しください4

シミュレーションログの最初のステップは、まず私たちは、ブラウザのログインが発生したかを把握する必要があります。

GitHubのログインページがある  https://github.com/login  。私たちはまず、ブラウザのクッキーの記録をオフにして、Chromeでログインページを開きます。ユーザー名とパスワードを入力した後、我々は、ボタンの上に署名し、レビューツール(見つけネットワーク]タブ)のタンパーChromeとChromeの要素を開きます。

タンパークロームでは、我々はそれを見つけた:ログインページですが  https://github.com/login  が、実際にフォームを受信することがある   https://github.com/session  。ログインに成功すると、その後にジャンプ   https://github.com/  家、リターン・ステータスコード   200 。

Chromeの要素を点検ウィンドウで、我々は、提出する見ることができます   session フォームインタフェースを。内部は含まれてい

コミット
UTF8 
authenticity_token 
ログイン
パスワードを

その中でも、  commit そして   utf8 二人は一定であり、  login かつ   password 、十分に理解されているユーザー名とパスワード、です。例外が   authenticity_token 不規則な文字の長いリストである、我々はそれが何であるかを知りません。

POSTアクションはで行われる  session 前インタラクティブインターフェース、従って情報の可能なソースは、   login インターフェイス。私たちは、オープンソースのログインページ、を検索してみてください   authenticity_token 、次のことを見つけることは難しいことではありません。

<入力名= "authenticity_token" タイプ= "隠れた" 値= "..." />

これは、いわゆることが判明した  authenticity_token だけで、HTMLページに書かれて理解することである   hidden 隠されたパターン。この目的のために、我々は唯一、罰金をそれを解決するために、通常のPythonライブラリを使用する必要があります。

import requests
import re

login_url  = 'https://github.com/login'
user = 'user'  //具体账号
password  = 'password'   //具体密码
user_headers = {
    'User-Agent' : 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.116 Safari/537.36',
    'Accept' : 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
    'Accept-Encoding' : 'gzip',
    'Accept-Language' : 'zh-CN,zh;q=0.8,en;q=0.6,zh-TW;q=0.4'
}

session  = requests.Session()
response = session.get(login_url, headers = user_headers)
pattern = re.compile(r'<input name="authenticity_token" type="hidden" value="(.*)" />')

authenticity_token = pattern.findall(response.content)[0] 

login_data = {     
    'コミット'、 'ログイン'     
    'UTF8': '%E2%9C%93'、     
    'authenticity_token':authenticity_token、 'ログイン':ユーザ     
    'パスワード':パスワード
} 

session_url = 'https://github.com/session' 
応答= session.post(session_url、ヘッダー= user_headers、データ= login_data)

1.まず、我々は準備ができてとChrome一貫性のあるHTTPリクエストのヘッダー情報です。具体的には、これ  User-Agent より重要です。

2.通信は、我々が作成し、ブラウザとサーバ上でモデル化  requests.Session 。

3.私たちは、GETメソッドを使用してログインページを開き、そして決意は、通常のライブラリを使用します  authenticity_token 。

4.必要なデータ、Pythonの辞書login_dataへの準備

5.最後に、POSTメソッドは、フォームをに提出さ  session インターフェース。

6.最終結果を通じて  302 ジャンプ、オープン(  200 )GitHubのページ。

おすすめ

転載: www.cnblogs.com/7758520lzy/p/12102734.html