リクエストモジュールの用途2

1、クッキー、およびセッション

1.1クッキーとセッションとは何ですか?

クッキーは、サイトユーザ、セッショントラッキング、ローカル端末に格納されたデータを識別するために使用されます。
現在のセッション(セッション)までが意味する動作とメッセージの始まりと終わりシリーズあります。

ウェブでは、セッション情報は、主に必要な特定のサーバーセッションのユーザーオブジェクトを格納するために使用されます。

1.2、理由のクッキーとセッションが生成さ:

ときに、特定の操作のHTTPプロトコルは、ステートレスなプロトコルである、あなたは情報を保存する必要があり、その後、クッキーやセッションを生成します。

1.3、クッキーの原則:

サーバー、ブラウザの最初の要求によって生成され、サーバーがクライアントに送信し、保存され、ブラウザがアクセスを継続し、サーバーが訪問している人を識別できるように、クッキークッキーリクエストヘッダフィールドに関する情報が含まれます。

しかし、クッキーの欠陥:
1、安全ではない-改ざんに対して脆弱で、ローカルに保存されました。
2、サイズは、最大4キロバイト自体制限されています。

クッキーはある程度「ホールドのニーズを解決するために、私たちは欠陥を克服することができる新しいクッキーの技術を持っていると思っていますが、この技術は、セッションです。

1.4、セッション

セッションは、サーバーに保存されています。----解決のセキュリティ問題。
質問です:サーバー上のセッションが、クライアントは、サーバが、最終的にsession_a、session_bを、知っているどのようにオーバーし、要求に対応するリクエストを送信します。
したがって、この問題を解決するために:ブリッジとしてのクッキー。セッションIDクッキーでは、この要求に対応するフィールドには、サーバーセッションのどちらを示すのに使用することができました。
クッキーを無効にし、通常の状況下では、セッションを使用することはできません。あなたは、使用セッションに例外的な状況を書き換えるのURLを使用することができます。
URL書き換え:セッションIDは、URLの内部にスプライスされます。

セッションのライフサイクル:サーバーを起動するには、有効なエンドを(サイトの設定は、通常は30分程度です)を作成し、それが削除されます。

1.5、クッキー共通フィールド
    "domain": ".baidu.com",   #主机名
    "expirationDate": 1607430402.780818, #过期时间(时间戳=>等价于Tue Dec  8 20:26:42 2020)
    "name": "BAIDUID", #字段名
    "path": "/", #主机哪个路径下设置的cookie
    "secure": false, 是否安全传输
    "value": "FC48EB3E32989D00F7BFCA9AF76D009A:FG=1", #字段值
    "id": 1 #cookiesid
1.6、セッションクッキーと永続的なCookie

セッションクッキー:

「ExpirationDateと」値を使用すると、メモリ内に格納されている有効なクッキーであることを、ブラウザのクッキーの停戦を閉じたときに、負です。

永続的なクッキー

クッキーEXPIRATIONDATE障害時の1607430402.780818、:「ExpirationDateと」。お使いのハードディスクに保存されたクッキー

永続性:ハードディスクにメモリ内のデータの永続化。実際には、ファイルやデータベースにデータを保存します。
メモリの主要な役割は、高速なアプリケーションソフトウェアやプログラムを起動すると、彼らはプログラムの実行など、いくつかのメモリ空間を割り当てますためです。
いったん電源障害メモリがクリアされます。

1.7、クッキーを通じてgithubのページにログインします
要求で使用されるクッキーの第一の実施形態(Cookieがヘッダ内に配置されます)
import requests

headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36',
    'Cookie': '_octo=GH1.1.90071fdfg1199.1575898561; _device_id=78c6d6dc75b0d87dg7afb73742a9679aa9; _ga=GA1.2.1521343976.1575898582; has_recent_activity=1; tz=Asia%2FShanghai; experiment:homepage_signup_flow=eyJ2ZXJzaW9uIjoiMSIsInJvbGxPdXRQbGFjZW1lbnQiOjM1LjE2NzQ2NjU3Nzg3OTk1Niwic3ViZ3JvdXAiOm51gdfbGwsImNyZWF0ZWRBdCI6IjIwMjAtMDMtMThUMDI6MDQ6MjMuODA4WiIsInVwZGF0ZWRBdCI6IjIwMjAtMDMtMjVUMDQ6MTk6MTUuNjA5WiJ9; user_session=jk2HfEj_4gWfU8V_4dvps7naVFFB_R0aUn4_mVrdxnQWy9u7; __Host-user_session_same_site=jk2HfEj_4gWfU8V_4dvps7naVFFB_R0aUn4_mVrdxnQWy9u7; logged_in=yes; dotcom_user=2829507692; _gh_sess=x0LIdSUTKSwhKICq0QYKsXlDJULU%2BjhBdrK8NzsFYwNIUOHV0gYsMgjLZ%2B8YgTBoSp%2FjMZXHhuMfdD4dr7sqV%2F1IF%2BA0GnYV6J%2BsyyoMxpoz%2BVOdYGWqUi4p5KOIxm6VAOyePx6fEM21VAGMdEqq9EXErfH0n3j81aFFQeKYv3TgkEWqpYbD6DNKWrUOB%2FrbwmyND0z%2BdjrTLDE6YbZnwZwEoaiIZUhd6Rd265uMBD%2B38uNc7jHQRl1TVrfPwHTHXi%2BfE4LSzMOZalVQgoNlGxi0o0QXwa%2F12pt97CFIUjnSIqYwBEEVkl81pVBhjVzkKWQsKLPaSArMJ3wDPBKHegQCRLZ3u2lMa2%2BZTLKnOsA20%2BX9Z%2B2DdRPL9UHusnUME%2F77KC4V%2FNrHMKnPkLC2dpZFojKSZscTpjBB4PeYF4KV84sMOMrxQlHetWDKN8%2BcjSuHPOGdf2qHq67AbyaRsoyFK3T2cQocIqJh9pYEQwmnm%2FasWoP82PsAn%2FbujQY%2BzJq1iVWxVUCH0nc5mShuwJg0AJBjAiaFwSvCjWF5eUFYmKTA9Bk%2FpH254MbDb8ofJsWJs6m1oycxEuJogMHkxZuIrWGIQezG%2BBYODyTJOco4oGRp11dVTPZLXTj3Vet0pwvL749B8hfmskK%2F4w2mvErIoxxe6yy1u0kgwgq4xIcgwmsdfg0I7ZUQC6ak0cGNfOeomjoTSPNLT0DZoUFW4WSjhiGgxIiUowPFB9PQ9FCvxrw8%2FyV0foedzTKQVZUnru7Ik4XkYpKakmfzZRPn5soED4XFgJVmzTB4xVxQSHNzsDgwBWupZYxE5dcYitWVr3OrMYAeqzpc%2BVbEs8%2BtWNpKDlJDOMYQfsqwGexThnNYlj2IvnIz0aQydEva%2FNcZNlHOiEaD%2BN8xdMyqd2GTydT1LjkizWv4SofUNjroCj3mgggH2hCcOwRUhcYUJZt8Z6gW7JYiLCxQqnjVrJBc%2Bw2dgg1scohQhZ6PXkk5IqvX3p2mP2Xq967TEqr4bqntFcARsTUM4bT54D81XHiS6g1Rue0QmXu3pxe%2BEiMpoptbMRcQFsPQqE8PhweZKCL9ZOW0637rmt4qVNuQdvfGi9N2Bs9aO4PjDk%2Brrj5tWhSSzdCRUbYWzhtNj9CXImyQZoTZ7aPKrgRd2tjiEl5l61uPfdAvd%2FXv4dKxXbUlIb3TLhNsmJExDgdgfj7CoSiysaKwluM4D2Ggbk9xqtvSI9g57PweEA%2BhoxnjZKI0It65ZgZ5bIX7ipEEAo14uLPsqGut6ittBEp1UT5xELjUaM6LPto%2F9IPLlG4U8mdb3u7xx%2BuTakRu7yfbabDUkv0QXY9nsg3u27eTg097WErlgeB7jqf%2Flc%2Ft8laI%2B641xqA2kKKcr38PYwrkbySJyf5TMjgLop6qFCo738w%2B8J409OIEqNREN0IoW0DrfELoHmAkhMAYyzY2Yynbs3973wyyOTZUwNvm4K0mQQ%3D%3D--07oaTkbSmNfGWujT--xcmABMjlD5SJ9u8LnSFp%2Bwdsf%3D%3D'
}
url = 'https://github.com/'

res = requests.get(url, headers=headers).content.decode('utf-8')
if 'username' in res:
    print('login True')
要求で使用されるクッキーの第一の実施形態(パラメータ配置クッキーでクッキー)
import requests

cookies='_octo=GH1.1.900711199.1575898561; _device_id=78c6d6dc75b0d877afb73742a9679aa9; _ga=GA1.2.1521343976.1575898582; has_recent_activity=1; tz=Asia%2FShanghai; experiment:homepage_signup_flow=eyJ2ZXJzaW9uIjoiMSIsInJvbGxPdXRQbGFjZW1lbnQiOjM1LjE2NzQ2NjU3Nzg3OTk1Niwic3ViZ3JvdXAiOm51bGwsImNyZWF0ZWRBdCI6IjIwMjAtMDMtMThUMDI6MDQ6MjMuODA4WiIsInVwZGF0ZWRBdCI6IjIwMjAtMDMtMjVUMDQ6MTk6MTUuNjA5WiJ9; user_session=jk2HfEj_4gWfU8V_4dvps7naVFFB_R0aUn4_mVrdxnQWy9u7; __Host-user_session_same_site=jk2HfEj_4gWfU8V_4dvps7naVFFB_R0aUn4_mVrdxnQWy9u7; logged_in=yes; dotcom_user=2829507692; _gh_sess=x0LIdSUTKSwhKICq0QYKsXlDJULU%2BjhBdrK8NzsFYwNIUOHV0gYsMgjLZ%2B8YgTBoSp%2FjMZXHhuMfdD4dr7sqV%2F1IF%2BA0GnYV6J%2BsyyoMxpoz%2BVOdYGWqUi4p5KOIxm6VAOyePx6fEM21VAGMdEqq9EXErfH0n3j81aFFQeKYv3TgkEWqpYbD6DNKWrUOB%2FrbwmyND0z%2BdjrTLDE6YbZnwZwEoaiIZUhd6Rd265uMBD%2B38uNc7jHQRl1TVrfPwHTHXi%2BfE4LSzMOZalVQgoNlGxi0o0QXwa%2F12pt97CFIUjnSIqYwBEEVkl81pVBhjVzkKWQsKLPaSArMJ3wDPBKHegQCRLZ3u2lMa2%2BZTLKnOsA20%2BX9Z%2B2DdRPL9UHusnUME%2F77KC4V%2FNrHMKnPkLC2dpZFojKSZscTpjBB4PeYF4KV84sMOMrxQlHetWDKN8%2BcjSuHPOGdf2qHq67AbyaRsoyFK3T2cQocIqJh9pYEQwmnm%2FasWoP82PsAn%2FbujQY%2BzJq1iVWxVUCH0nc5mShuwJg0AJBjAiaFwSvCjWF5eUFYmKTA9Bk%2FpH254MbDb8ofJsWJs6m1oycxEuJogMHkxZuIrWGIQezG%2BBYODyTJOco4oGRp11dVTPZLXTj3Vet0pwvL749B8hfmskK%2F4w2mvErIoxxe6yy1u0kgwgq4xIdacgwm0I7ZUQC6ak0cGNfOeomjoTSPNLT0DZoUFW4WSjhiGgxIiUowPFB9PQ9FCvxrw8%2FyV0foedzTKQVZUnru7Ik4XkYpKakmfzZRPn5soED4XFgJVmzTB4xVxQSHNzsDgwBWupZYxE5dcYitWVr3OrMYAeqzpc%2BVbEs8%2BtWNpKDlJDOMYQffasdfsqwGexThnNYlj2IvnIz0aQydEva%2FNcZNlHOiEaD%2BN8xdMyqd2GTydT1LjkizWv4SofUNjroCj3mgggH2hCcOwRUhcYUJZt8Z6gW7JYiLCxQqnjVrJBc%2Bw2dgg1scohQhZ6PXkk5IqvX3p2mP2Xq967TEqr4bqntFcARsTUM4bT54D81XHiS6g1Rue0QmXu3pxe%2BEiMpoptbMRcQFsPQqE8PhweZKCL9ZOW0637rmt4qVNuQdvfGi9N2Bs9aO4PjDk%2Brrj5tWhSSzdCRUbYWzhtNj9CXImyQZoTZ7aPKrgRd2tjiEl5l61uPfdAvd%2FXv4dKxXbUlIb3TLhNsmJExDj7CoSiysaKwluM4D2Ggbk9xqtvSI9g57PweEA%2BhoxnjZKI0It65ZgZ5bIX7ipEEAo14uLPsqGut6ittBEp1UT5xELjUaM6LPto%2F9IPLlG4U8mdb3u7xx%2BuTakRu7yfbabDUkv0QXY9nsg3u27eTg097WErlgeB7jqf%2Flc%2Ft8laI%2B641xqA2kKKcr38PYwrkbySJyf5TMjgLop6qFCo738w%2B8J409OIEqNREN0IoW0DrfELoHmAkhMAYyzY2Yynbs3973wyyOTZUwNvm4K0mQQ%3D%3D--07oaTkbSmNfGWujT--xcmABMjlD5SJ9u8LnSFp%2Bw%3D%3D'
cookies_dic={item.split('=')[0]:item.split('=')[1]for item in cookies.split('; ') }
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36',
}
url = 'https://github.com/'

res = requests.get(url, headers=headers,cookies=cookies_dic).content.decode('utf-8')
if 'username' in res:
    print('login True')
1.9、+セッションデータ・ディクショナリ・オブジェクトを構築することにより、githubのをログに記録
1.9.1(分析URL https://github.com/sessionは)理解し、次のパラメータは、ポスト要求を送信渡す必要があります。
commit: Sign in
authenticity_token: 9Ek9mN5qMK7Mr3DS3goFGj1zJcsywLXMA6eLMoZ3fLaW8z4SXuc6Qugv6H2/gyvfjAVOaqxpxHKvCVkUQa1SZg==
login: username
password: password
webauthn-support: supported
webauthn-iuvpaa-support: supported
return_to: 
required_field_6c85: 
timestamp: 1585111598578
timestamp_secret: 79735a7473e5c621225663e9f306bc3f1ea61c3926869e33200415096b3350c6

私たちは、Sessionオブジェクトを渡す場合でも、最初のアクセスログインページ(https://github.com/login)、セッションは、その後、我々は唯一、次のいくつかのパラメータを渡す必要がある、オブジェクトデータクッキーの一部として保存されます。

commit: Sign in
authenticity_token: 91zJcsywLXMA6eLMoZ3fLaW8z4SXuc6Qugv6H2/gyvfjAVOaqxpxHKvCVkUQa1SZg==
login: username
password: password

そしてauthenticity_tokenはログインを完了するために、データ・ディクショナリを構築するために、ページ内のログインページにアクセスして、このパラメータを取得することができます。

1.9.2、次のように
import requests
import re

headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36',
    'Referer': 'https://github.com/',
}
base_url = 'https://github.com/login'
request = requests.Session()
res = request.get(base_url, headers=headers).content.decode('utf-8')
data = {
    'commit': 'Sign in',
    'authenticity_token': re.search(r'<input type="hidden" name="authenticity_token" value="(.*?)" />', res,re.S).group(1),
    'login': 'username',
    'password': 'password',
}

login_url = 'https://github.com/session'
res = request.post(login_url, data=data)
# with open('./1.html', 'w', encoding='utf-8') as file: #可打开这个页面,查看是否登录成功。
#     file.write(res.text)
if 'username' in res.text: #也可通过关键字,查看是否登录成功。
    print('login True')

第二に、薬

2.1、エージェントの役割
  • このような一部の外国のウェブサイトの壁、さらにはダークネットなど正常にアクセスできないいくつかのサイトへのアクセスを、独自のIPアクセス制限を解除します。
  • アクセス内部リソースへの一部のユニットまたはグループは:例えば、教育のネットワークアドレス無料のプロキシサーバーを使用して、それがオープン教育ネットワークFTPのダウンロード、アップロードのすべての種類のために使用され、情報のお問い合わせや他のサービスのすべての種類を共有することができます。
  • アクセス速度の向上:プロキシサーバーは、通常、他のユーザーがバッファから直接同じ情報にアクセスする際に、バッファリングするために外部の情報を渡したときに、大容量のハードディスクバッファを設定するだけでなく、それ保存されていますチェは、アクセス速度を向上させるためには、ユーザに情報を取得します。
  • 本当のIPを隠す:インターネットユーザーにもいくつかのトラブルを減らし、このようにあなたのIPを非表示にすることができます。爬虫類のために、我々は彼らがブロックされるのを防ぐために、自分自身のIPを隠すために使用することを代理。
2.2、IP分類
合意によると2.2.1、
  • FTPプロキシサーバー:主に一般的にアップロード、ダウンロードおよびキャッシュ機能を持っているFTPサーバーにアクセスするのに使用され、ポートは通常21、2121というようにです。
  • HTTPプロキシサーバー:主に、コンテンツフィルタリングとキャッシュをWebページにアクセスするために使用される、ポートは通常80で、8080、3128など。
  • SSL / TLSプロキシ:主に暗号化されたサイトにアクセスするために使用されるが、一般的にSSLやTLS暗号化、ポート、通常は443を持っています。
  • RTSPプロキシ:主にリアルタイムのストリーミングメディアサーバーにアクセスするために使用される、一般的にキャッシュ機能は、ポートは通常554です。
  • Telnetのプロキシ:主に(コンピュータハッカーの侵入は、多くの場合、身元を隠すために使用される)のtelnetリモートコントロールに使用するには、ポートは通常23です
  • POP3 / SMTPプロキシ:主に一般POP3 / SMTPメールモード、キャッシュ機能、典型的には110ポート/ 25のために使用されます。
  • SOCKSプロキシ:単にパケットは、特定のプロトコルと使用するので、スピードの多くは、一般的にキャッシュ機能を気にしない渡し、ポートは通常1080です。SOCKSプロキシプロトコルをSOCKS4とSOCKS5、前者のみをサポートTCPに分割され、後者の支持TCPとUDPながら、そのようなドメイン名解決サーバなどの認証メカニズム、様々なサポート。簡単に言えば、SOCKS4 SOCKS5を行うことができないことができますが、それを行うことができないSOCKS4 SOCKS5を行うことができます。
2.2.2、点に従って匿名性の程度
  • 高い匿名プロキシ:完全なパケットが実際のIP、最高のセキュリティとして、プロキシサーバーのIPに転送されます。次のようにパケット:

    • REMOTE_ADDR =代理IP
      
      HTTP_VIA = 没数值或不显示
      
      HTTP_X_FORWARDED_FOR =没数值或不显示
      
  • 匿名プロキシ:使用プロキシサーバーは、あなたが知っているが、あなたの本当のIPを知りません。パケットを以下に示します。

    • REMOTE_ADDR =最后一个代理服务器IP
      
      HTTP_VIA = 代理服务器IP
      
      HTTP_X_FORWARDED_FOR=途经代理IP
      
  • 透過プロキシ:使用プロキシサーバーは、あなたが知っている、また、あなたの本当のIPアドレスを知っています。パケットは、次の

    • REMOTE_ADDR =最后一个代理服务器IP
      
      HTTP_VIA = 代理服务器IP
      
      HTTP_X_FORWARDED_FOR=真实IP,途经代理IP
      
2.3、エージェントの取得
  • 1、購入へのプロキシサーバーのベンダーは、通常、使いやすい、高効率のインタフェースを提供します。
  • それは自由なので、非効率的であるため、2、インターネットから自分の登山を取ります。
2.4、エージェントの使用法

私は、西とげ機関の公式サイトからhttps://www.xicidaili.com/nn/ここにいる少数をコピーします。

1、非暗号化されたプロキシの使用

import requests

proxies = {
  "http": 'http://218.75.158.153:3128',
  "https": "http://116.113.27.170:47849",
}
url = 'http://httpbin.org/get'
res = requests.get(url, proxies=proxies)

print(res.text)

{
  "args": {}, 
  "headers": {
    "Accept": "*/*", 
    "Accept-Encoding": "gzip, deflate", 
    "Cache-Control": "max-age=259200", 
    "Host": "httpbin.org", 
    "User-Agent": "python-requests/2.22.0", 
    "X-Amzn-Trace-Id": "Root=1-5e7c389a-3cc713099f9a75d856987e3c"
  }, 
  "origin": "218.75.158.153",  #在此,我们看到了上面的代理地址
  "url": "http://httpbin.org/get"
}

図2に示すように、上記と同様の方法を使用して暗号化剤の使用。

#我们需要加用户名与密码,格式如此
proxies = {
    "http": "http://user:[email protected]/", 
}

おすすめ

転載: www.cnblogs.com/hjnzs/p/12574456.html