ゼロベースの入門から習熟までのリクエスト ライブラリの使用法 (非常に詳細) については、この記事を読むだけで十分です。

urllib ライブラリは使用するのが面倒で、たとえば Web ページの検証や Cookie を扱う場合、それを処理する Opener と Handler を記述する必要があります。これらの操作をより便利に実現するために、より強力なリクエスト ライブラリがあります。

リクエストライブラリのインストール

request はサードパーティのライブラリであり、Python は組み込まれていないため、手動でインストールする必要があります。

1. 関連リンク

  • GitHub:https://github.com/psf/requests

  • PyPI:https://pypi.org/project/requests/

  • 公式ドキュメント: https://docs.python-requests.org/en/latest/

  • 中国語のドキュメント: https://docs.python-requests.org/zh_CN/latest/user/quickstart.html

2. pip 経由でインストールする

Windows、Linux、Mac のいずれであっても、リクエストはパッケージ管理ツールである pip を通じてインストールできます。コマンド ライン インターフェイスで次のコマンドを実行して、リクエスト ライブラリのインストールを完了します。

pip3 install requests

pip を介してインストールするだけでなく、ホイールまたはソース コードを介してインストールすることもできますが、ここでは説明しません。

3. インストールを確認する

コマンドラインでインポートライブラリをインポートすることで、リクエストが正常にインストールされたかどうかをテストできます。
インポート ライブラリが成功したことは、リクエストのインストールが成功したことを示します。

基本的な使い方

次の例では、リクエスト ライブラリの get( ) メソッドを使用して get リクエストを送信します。

#导入requests库
import requests
#发送一个get请求并得到响应
r = requests.get('https://www.baidu.com')
#查看响应对象的类型
print(type(r))
#查看响应状态码
print(r.status_code)
#查看响应内容的类型
print(type(r.text))
#查看响应的内容
print(r.text)
#查看cookies
print(r.cookies)

ここでは、 urlopen( ) と同じ動作を実装するために get( ) メソッドが呼び出され、結果として応答オブジェクトが返され、その後、応答オブジェクトの種類、ステータス コード、応答本文のコンテンツ タイプ、応答本文の内容、それぞれCookieが出力されます。実行結果から、応答オブジェクトの型はrequests.models.Response、応答本文の内容の型はstr、Cookieの型はRequestCookieJarであることがわかります。他のタイプのリクエストを送信したい場合は、対応するメソッドを直接呼び出してください。

r = requests.post('https://www.baidu.com')
r = requests.put('https://www.baidu.com')
r = requests.delete('https://www.baidu.com')
r = requests.head('https://www.baidu.com')
r = requests.options('https://www.baidu.com')

GETリクエスト

GET リクエストを作成し、http://httpbin.org/get をリクエストします (Web サイトは、クライアントが GET リクエストを開始すると、対応する情報を返すと判断します)。

import requests
r = requests.get('http://httpbin.org/get')
print(r.text)


1) リクエスト パラメータを追加する場合 (name の値が germey で、age の値が 20 である 2 つのリクエスト パラメータを追加するなど)。次のように書くこともできますが、

r = requests.get('http://httpbin.org/get?name=germey&age=20')

ただし、より良い書き方は次のとおりです。

import requests
data = {
	'name':'germey',
  'age':22
}
r = requests.get('http://httpbin.org/get',params=data)
print(r.text)


実行結果から、リクエストされた URL は最終的に「http://httpbin.org/get?name=germey&age=20」として構築されることがわかります。

2) 返される Web ページのコンテンツの型は str 型ですが、JSON 形式に準拠している場合は、 json() メソッドを使用して辞書型に変換し、解析しやすくします。

import requests
r = requests.get('http://httpbin.org/get')
#str类型
print(type(r.text))
#返回响应内容的字典形式
print(r.json())
#dict类型
print(type(r.json()))

ただし、返されたコンテンツが JSON 形式でない場合、 json() メソッドの呼び出し時にエラーが発生し、 json.decoder.JSONDecodeError 例外がスローされることに注意してください。

POSTリクエスト

1) POST リクエストを送信します。

import requests
r = requests.post('http://httpbin.org/post')
print(r.text)

2) リクエストパラメータを指定して POST リクエストを送信します。

import requests
data = {
  "name":"germey",
  "age":"22"
}
r = requests.post('http://httpbin.org/post',data=data)
print(r.text)


POSTリクエストメソッドでは、フォーム部分がリクエストパラメータとなります。

リクエストヘッダーを設定する

import requests
headers = {
  'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:95.0) Gecko/20100101 Firefox/95.0',
  'my-test':'Hello'
}
r = requests.get('http://httpbin.org/get',headers=headers)
print(r.text)

応答

1) リクエスト送信後、レスポンスが返されます。レスポンスには多くの属性があり、その属性からステータスコード、レスポンスヘッダ、Cookie、レスポンス内容などを取得できます。次のように:

import requests
r = requests.get('https://www.baidu.com/')
#响应内容(str类型)
print(type(r.text),r.text)
#响应内容(bytes类型)
print(type(r.content),r.content)
#状态码
print(type(r.status_code),r.status_code)
#响应头
print(type(r.headers),r.headers)
#Cookies
print(type(r.cookies),r.cookies)
#URL
print(type(r.url),r.url)
#请求历史
print(type(r.history),r.history)

2) ステータス コードは、リクエストが成功したかどうかを判断するためによく使用されます。HTTP によって提供されるステータス コードに加えて、リクエスト ライブラリは、requests.codes と呼ばれる組み込みのステータス コード クエリ オブジェクトも提供します。実際、両方は同等です。 。例は次のとおりです。

import requests
r = requests.get('https://www.baidu.com/')
if not r.status_code==requests.codes.ok:
  print('Request Fail')
else:
  print('Request Successfully')

request.codes オブジェクトが所有するステータス コードは次のとおりです。

#信息性状态码
100:('continue',),
101:('switching_protocols',),
102:('processing',),
103:('checkpoint',),
122:('uri_too_long','request_uri_too_long'),

#成功状态码
200:('ok','okay','all_ok','all_okay','all_good','\\o/','√'),
201:('created',),
202:('accepted',),
203:('non_authoritative_info','non_authoritative_information'),
204:('no_content',),
205:('reset_content','reset'),
206:('partial_content','partial'),
207:('multi_status','multiple_status','multi_stati','multiple_stati'),
208:('already_reported',),
226:('im_used',),

#重定向状态码
300:('multiple_choices',),
301:('moved_permanently','moved','\\o-'),
302:('found',),
303:('see_other','other'),
304:('not_modified',),
305:('user_proxy',),
306:('switch_proxy',),
307:('temporary_redirect','temporary_moved','temporary'),
308:('permanent_redirect',),

#客户端请求错误
400:('bad_request','bad'),
401:('unauthorized',),
402:('payment_required','payment'),
403:('forbiddent',),
404:('not_found','-o-'),
405:('method_not_allowed','not_allowed'),
406:('not_acceptable',),
407:('proxy_authentication_required','proxy_auth','proxy_authentication'),
408:('request_timeout','timeout'),
409:('conflict',),
410:('gone',),
411:('length_required',),
412:('precondition_failed','precondition'),
413:('request_entity_too_large',),
414:('request_uri_too_large',),
415:('unsupported_media_type','unsupported_media','media_type'),
416:('request_range_not_satisfiable','requested_range','range_not_satisfiable'),
417:('expectation_failed',),
418:('im_a_teapot','teapot','i_am_a_teapot'),
421:('misdirected_request',),
422:('unprocessable_entity','unprocessable'),
423:('locked'),
424:('failed_dependency','dependency'),
425:('unordered_collection','unordered'),
426:('upgrade_required','upgrade'),
428:('precondition_required','precondition'),
429:('too_many_requests','too_many'),
431:('header_fields_too_large','fields_too_large'),
444:('no_response','none'),
449:('retry_with','retry'),
450:('blocked_by_windows_parental_controls','parental_controls'),
451:('unavailable_for_legal_reasons','legal_reasons'),
499:('client_closed_request',),

#服务端错误状态码
500:('internal_server_error','server_error','/o\\','×')
501:('not_implemented',),
502:('bad_gateway',),
503:('service_unavailable','unavailable'),
504:('gateway_timeout',),
505:('http_version_not_supported','http_version'),
506:('variant_also_negotiates',),
507:('insufficient_storage',),
509:('bandwidth_limit_exceeded','bandwith'),
510:('not_extended',),
511:('network_authentication_required','network_auth','network_authentication')

バイナリデータをクロールする

画像、音声、ビデオなどのファイルは基本的にバイナリ コードで構成されているため、ファイルをクロールしたい場合はバイナリ コードを取得する必要があります。例として、Baidu のサイト アイコン (タブ上の小さなアイコン) をクロールしてみましょう。

import requests
#向资源URL发送一个GET请求
r = requests.get('https://www.baidu.com/favicon.ico')
with open('favicon.ico','wb') as f:
  f.write(r.content)

open( ) メソッドを使用します。その最初のパラメータはファイル名 (パス付き) を保存し、2 番目のパラメータはデータをバイナリ形式で書き込むことを示します。実行後、現在のディレクトリに favicon.ico という名前の保存されたアイコンが見つかります。同様に、オーディオとビデオもこの方法で取得できます。

ファイルのアップロード

リクエストは、一部のデータの送信をシミュレートできます。Web サイトでファイルをアップロードする必要がある場合は、それも実現できます。

import requests
#以二进制方式读取当前目录下的favicon.ico文件,并将其赋给file
files = {'file':open('favicon.ico','rb')}
#进行上传
r = requests.post('http://httpbin.org/post',files=files)
print(r.text)

Cookieの処理

urllib を使用して Cookie を処理するのはより複雑ですが、リクエストを使用して Cookie を処理するのは非常に簡単です。

1) Cookieを取得します。

import requests
r = requests.get('https://www.baidu.com')
#打印Cookies对象
print(r.cookies)
#遍历Cookies
for key,value in r.cookies.items():
	print(key+'='+value)

Cookie は、RequestCookiesJar 型のオブジェクトである応答オブジェクトの cookies プロパティを呼び出して取得できます。その後、 items() メソッドを使用してそれをタプルのリストに変換し、それぞれの名前と値を走査して出力します。クッキー。

2) ログイン状態を維持するために Cookie を使用します。Zhihu を例に挙げると、まず Zhihu にログインし、ログイン後にのみアクセスできるページに入り、ブラウザの開発者ツールのヘッダーにある Cookie をコピーします (直接コピーされた Cookie に省略記号が含まれている場合があります。これにより、プログラムがエラーが発生しました。コンソール項目の下に document.cookie と入力すると、完全な Cookie を取得できます)。それをプログラムで使用し、ヘッダーに設定して、リクエストを送信します。

import requests
headers = {
  'Cookie':'_zap=616ef976-1fdb-4b8c-a3cb-9327ff629ff1; _xsrf=0CCNkbCLtTAlz5BfwhMHBHJWW791ZkK6; d_c0=\"AKBQTnFIRhSPTpoYIf6mUxSic2UjzSp4BYM=|1641093994\"; __snaker__id=mMv5F3gmBHIC9jJg; gdxidpyhxdE=E%2BNK7sMAt0%2F3aZ5Ke%2FSRfBRK7B1QBmCtaOwrqJm%2F1ONP3VPItkrXCcMiAX3%2FIsSxUwudQPyuDGO%2BlHGPvNqGqO9bX1%2B58o7wmf%2FZewh8xSPg%2FH3T2HoWsrs7ZhsSGND0C0la%2BXkLIIG5XXV85PxV5g99d%5CMph%2BbkX1JQBGhDnL3N0zRf%3A1641094897088; _9755xjdesxxd_=32; YD00517437729195%3AWM_NI=rMeMx2d5Yt3mg0yHPvuPGTjPnGtjL%2Bn%2FPSBnVn%2FHFAVZnIEABUIPITBdsHmMX1iCHfKauO4qhW%2Bi5bTy12Cg91vrxMPgOHtnaAylN8zk7MFpoTr%2FTeKVo3%2FKSSM6T5cNSGE%3D; YD00517437729195%3AWM_NIKE=9ca17ae2e6ffcda170e2e6ee8bea40f8e7a4b2cf69b3b48fb7c54b979b8fbaf17e93909b91fb338ebaaeadec2af0fea7c3b92ab293abaefb3aa8eb9795b267a5f0b7a9d37eb79089b5e95cae99bc8bcf21aef1a0b4c16696b2e1a9c54b9686a2aac84b828b87b1cc6082bcbda9f0479cefa7a4cb6e89bfbbb0b77bac89e58ab86a98a7ffd3c26dfbefba93fb4794b981a9f766a39fb78dcd34bab5f9aec57cad8cbed0d76f898aa1d4ae41918d83d7d73fa1929da8c837e2a3; YD00517437729195%3AWM_TID=Kji43bLtZbRAAAVABFMu4upmK4C%2BEGQH; KLBRSID=9d75f80756f65c61b0a50d80b4ca9b13|1641268679|1641267986; tst=r; NOT_UNREGISTER_WAITING=1; SESSIONID=lbWS7Y8pmp5qM1DErkXJCahgQwwyl79eT8XAOC6qC7A; JOID=V1wXAUwzD9BQH284PTQMxsZMqrkrXmuHBio3Bk1cfuMhV1x9fiHKBjYcaD44XxiWm2kKD5TjJvk-7iTeM3d6aYA=; osd=VVoQAk0xCddTHm0-OjcNxMBLqbgpWGyEBygxAU5dfOUmVF1_eCbJBzQabz05XR6RmGgICZPgJ_s46SffMXF9aoE=; Hm_lvt_98beee57fd2ef70ccdd5ca52b9740c49=1640500881,1641093994,1641267987; Hm_lpvt_98beee57fd2ef70ccdd5ca52b9740c49=1641268678',
  'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:95.0) Gecko/20100101 Firefox/95.0',
  'Host':'www.zhihu.com'
}
r = requests.get('https://www.zhihu.com/people/xing-fu-shi-fen-dou-chu-lai-de-65-18',headers=headers)
print(r.text)

実行後の結果にはログイン後の内容が含まれており、ログインステータスが正常に取得されたことが示されます。

3) cookies パラメータを通じて設定することもできますが、この方法では、RequestCookieJar オブジェクトを構築する必要があり、次の cookie を分割する必要があり、比較的面倒ですが、効果は同じです。

import requests

cookies ='_zap=616ef976-1fdb-4b8c-a3cb-9327ff629ff1; _xsrf=0CCNkbCLtTAlz5BfwhMHBHJWW791ZkK6; d_c0=\"AKBQTnFIRhSPTpoYIf6mUxSic2UjzSp4BYM=|1641093994\"; __snaker__id=mMv5F3gmBHIC9jJg; gdxidpyhxdE=E%2BNK7sMAt0%2F3aZ5Ke%2FSRfBRK7B1QBmCtaOwrqJm%2F1ONP3VPItkrXCcMiAX3%2FIsSxUwudQPyuDGO%2BlHGPvNqGqO9bX1%2B58o7wmf%2FZewh8xSPg%2FH3T2HoWsrs7ZhsSGND0C0la%2BXkLIIG5XXV85PxV5g99d%5CMph%2BbkX1JQBGhDnL3N0zRf%3A1641094897088; _9755xjdesxxd_=32; YD00517437729195%3AWM_NI=rMeMx2d5Yt3mg0yHPvuPGTjPnGtjL%2Bn%2FPSBnVn%2FHFAVZnIEABUIPITBdsHmMX1iCHfKauO4qhW%2Bi5bTy12Cg91vrxMPgOHtnaAylN8zk7MFpoTr%2FTeKVo3%2FKSSM6T5cNSGE%3D; YD00517437729195%3AWM_NIKE=9ca17ae2e6ffcda170e2e6ee8bea40f8e7a4b2cf69b3b48fb7c54b979b8fbaf17e93909b91fb338ebaaeadec2af0fea7c3b92ab293abaefb3aa8eb9795b267a5f0b7a9d37eb79089b5e95cae99bc8bcf21aef1a0b4c16696b2e1a9c54b9686a2aac84b828b87b1cc6082bcbda9f0479cefa7a4cb6e89bfbbb0b77bac89e58ab86a98a7ffd3c26dfbefba93fb4794b981a9f766a39fb78dcd34bab5f9aec57cad8cbed0d76f898aa1d4ae41918d83d7d73fa1929da8c837e2a3; YD00517437729195%3AWM_TID=Kji43bLtZbRAAAVABFMu4upmK4C%2BEGQH; KLBRSID=9d75f80756f65c61b0a50d80b4ca9b13|1641268679|1641267986; tst=r; NOT_UNREGISTER_WAITING=1; SESSIONID=lbWS7Y8pmp5qM1DErkXJCahgQwwyl79eT8XAOC6qC7A; JOID=V1wXAUwzD9BQH284PTQMxsZMqrkrXmuHBio3Bk1cfuMhV1x9fiHKBjYcaD44XxiWm2kKD5TjJvk-7iTeM3d6aYA=; osd=VVoQAk0xCddTHm0-OjcNxMBLqbgpWGyEBygxAU5dfOUmVF1_eCbJBzQabz05XR6RmGgICZPgJ_s46SffMXF9aoE=; Hm_lvt_98beee57fd2ef70ccdd5ca52b9740c49=1640500881,1641093994,1641267987; Hm_lpvt_98beee57fd2ef70ccdd5ca52b9740c49=1641268678'
jar = requests.cookies.RequestsCookieJar()
headers = {
  'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:95.0) Gecko/20100101 Firefox/95.0',
  'Host':'www.zhihu.com'
}
for cookie in cookies.split(';'):
  key,value = cookie.split('=',1)
  jar.set(key,value)
r = requests.get('https://www.zhihu.com/people/xing-fu-shi-fen-dou-chu-lai-de-65-18',headers=headers)
print(r.text)

セッションのメンテナンス

get( ) や post( ) などのメソッドを呼び出すことで、Web ページのリクエストをシミュレートできますが、これは実際には異なるセッションに相当します。つまり、2 つのブラウザを使用して異なるページを開くことになります。最初のリクエストで post( ) メソッドを使用して Web サイトにログインし、2 回目でログインに成功した後に自分の個人情報を取得する場合は、 get( ) メソッドを使用してリクエストされた個人情報を再度取得します。 , これはブラウザを2つ開いたことに相当するため、個人情報を正常に取得することができません。このため、セッションの維持が必要となり、2 つのリクエストに同じ Cookie を設定することもできますが、これは非常に面倒ですが、Session クラスを使用することで簡単にセッションを維持できます。

import requests
s = requests.Session()
s.get('http://httpbin.org/cookies/set/number/123456789')
r = s.get('http://httpbin.org/cookies')
print(r.text)

まずリクエストを通じてセッションを開き、次にセッションを通じて get リクエストを送信します。これは Cookie のパラメータ番号を設定するために使用されます。パラメータ値は 123456789 です。次に、これを使用して Cookie を取得するための get リクエストを開始し、フェッチされた内容を出力します。コンテンツ。


正常に取得されました。

SSL証明書の検証

リクエストは証明書検証機能も提供します。HTTP リクエストが送信されると、SSL 証明書がチェックされます。verify パラメータを使用して、SSL 証明書をチェックするかどうかを制御できます。

1) HTTPS Web サイトをリクエストする場合、Web サイトの証明書が CA 機関によって信頼されていない場合、プログラムはエラーを起こし、SSL 証明書検証エラーが表示されます。このためには、verify パラメータを False に設定するだけです。次のように:

import requests
resposne = requests.get('https://www.12306.cn',verify=False)
print(response.status_code)

クライアント証明書として使用するローカル証明書を指定することもできます。これは、単一のファイル (キーと証明書を含む) または 2 つのファイルへのパスを含むタプルにすることができます。

import requests
#本地需要有crt和key文件(key必须是解密状态,加密状态的key是不支持的),并指定它们的路径,
response = requests.get('https://www.12306.cn',cert('/path/server.crt','/path/key'))
print(response.status_code)

2) CA 機関が SSL 証明書を認識していない HTTPS Web サイトをリクエストする場合、verify パラメーターが False に設定されているにもかかわらず、プログラムの実行時に警告が生成される場合があります。これは、無視警告を設定することで保護できます。 この警告は次のとおりです。

import requests
from requests.packages import urllib3
urllib3.disable_warnings()
response = requests.get('https://www.12306.cn',verify=False)
print(response.status_code)

或者通过捕获警告到日志的方式忽略警告:

import logging
import requests
logging.captureWarnings(True)
response = requests.get('https://www.12306.cn',verify=False)
print(response.status_code)

プロキシ設定

一部の Web サイトでは、テスト中に数回リクエストを行うと、コンテンツが正常に取得できるようになりました。ただし、大規模かつ頻繁なクローリングが開始されると、Web サイトが認証コードをポップアップ表示したり、ログイン認証ページにジャンプしたり、クライアントの IP を直接ブロックしたりして、一定期間アクセスできなくなる可能性があります。これを防ぐには、プロキシを使用してこの問題を解決する必要があり、それには proxies パラメータが必要です。

1) プロキシを設定する

import requests

proxies = {
  	#该代理服务器在免费代理网站上得到的,这样的网站有很多
    'http': 'http://161.35.4.201:80',
    'https': 'https://161.35.4.201:80' 
}
try:
    response = requests.get('http://httpbin.org/get', proxies=proxies)
    print(response.text)
except requests.exceptions.ConnectionError as e:
    print('Error', e.args)


プロキシサーバーを利用してアクセスしていることが分かります。

2) プロキシで HTTP 基本認証を使用する必要がある場合は、http://user:password@host:port のような構文を使用してプロキシを設定できます。

import requests
proxies = {
  "http":"http://user:[email protected]:80"
}
r = requests.get("https://www.taobao.com",proxies=proxies)
print(r.text)

3) 基本的な HTTP プロキシに加えて、リクエストは SOCKS プロトコルのプロキシもサポートします。まず、socks ライブラリをインストールする必要があります。

pip3 install 'requests[socks]'

import requests
proxies = {
  'http':'socks5://user:password@host:port',
  'https':'socks5://user:password@host:port'
}
request.get('https://www.taobao.com',proxies=proxies)

その後、SOCKSプロトコルプロキシを使用できます

import requests
proxies = {
  'http':'socks5://user:password@host:port',
  'https':'socks5://user:password@host:port'
}
requests.get('https://www.taobao.com',proxies=proxies)

タイムアウト設定

ローカル ネットワークの状態が悪い場合、サーバー ネットワークの応答が遅すぎる場合、または応答がない場合、応答を受信するまでに非常に長い時間待機したり、最終的に応答を受信できなかった場合にはエラーが報告される場合があります。このような状況に対処するには、コンピュータがリクエストを送信してからサーバーがレスポンスを返すまでのタイムアウトを設定し、このタイムアウトを超えてリクエストがレスポンスを受信しない場合はエラーとなります。投げられた。これは、タイムアウト パラメーターを使用して実装する必要があります (秒単位)。

1) リクエストの合計タイムアウト時間を指定します

import requests
#向淘宝发出请求,如果1秒内没有得到响应,则抛出错误
r = requests.get('https://www.taobao.com',timeout=1)
print(r.status_code)

2) タイムアウト時間をそれぞれ指定します。実際、リクエストは接続 (connect) と読み取り (read) の 2 つのフェーズに分かれています。timeout パラメーターに整数値を指定した場合、タイムアウト期間は 2 つの段階の合計になります。これらを個別に指定する場合は、接続タイムアウト時間と読み取りタイムアウト時間のタプルを渡すことができます。

import requests
#向淘宝发出请求,如果连接阶段5秒内没有得到响应或读取阶段30秒内没有得到响应,则抛出错误
r = requests.get('https://www.taobao.com',timeout=(5,30))
print(r.status_code)

3) 永久に待機する場合は、タイムアウトを直接「なし」に設定するか、デフォルト値が「なし」であるため、タイムアウト・パラメータを設定しません。

import requests
#向淘宝发出请求,如果连接阶段5秒内没有得到响应或读取阶段30秒内没有得到响应,则抛出错误
r = requests.get('https://www.taobao.com',timeout=None))
print(r.status_code)

認証

Web サイトにアクセスすると、次の確認ページが表示される場合があります。

1) この時点で、HTTPBasicAuth クラスを通じて実装される、リクエストに付属する認証機能を使用できます。

import requests
from requests.auth import HTTPBasicAuth
r = requests.get('http://localhost:8080/manager/html',auth=HTTPBasicAuth('admin','123456'))
print(r.status_code)

ユーザー名とパスワードが正しい場合は 200 ステータス コードが返され、そうでない場合は 401 ステータス コードが返されます。HTTPBasicAuth クラスを使用する代わりに、タプルを直接渡すことができます。これにより、デフォルトで認証に HTTPBasicAuth クラスが使用されます。

import requests
from requests.auth import HTTPBasicAuth
r = requests.get('http://localhost:8080/manager/html',auth=('admin','123456'))
print(r.status_code)

2) リクエストでは、OAuth 認証などの他の認証方法も提供されますが、oauth パッケージをインストールする必要があります。インストール コマンドは次のとおりです。

pip3 install requests_oauthlib

OAuth認証を使用する方法は次のとおりです。

import requests
from requests_oauthlib import OAuth1
url = 'https://api.twitter.com/1.1/account/verify_credentials.json'
auth = OAuth1("YOUR_APP_KEY","YOUR_APP_SECRET","USER_OAUTH_TOKEN","USER_OAUTH_TOKEN_SECRET")
requests.get(url,auth=auth)

準備されたリクエスト

urllib ライブラリを学習する際、リクエストの送信時にリクエスト ヘッダーを設定する必要がある場合は、Request オブジェクトで表す必要があります。リクエスト ライブラリには、Prepared Request と呼ばれる同様のクラスがあります。

from requests import Request,Session
url = 'http://httpbin.org/post'
data = {
	'name':'germey'
}
headers = {
	'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:95.0) Gecko/20100101 Firefox/95.0'
}
s = Session()
req = Request('POST',url,data=data,headers=headers)
prepped = s.prepare_request(req)
r = s.send(prepped)
print(r.text)

ここで Request を導入し、url、data、headers パラメータで Request オブジェクトを構築しますが、このとき、Session の prepare_request() メソッドを呼び出して Prepared Request オブジェクトに変換する必要があります。 send() メソッドを呼び出して送信します。この利点は、Request を使用してリクエストを独立したオブジェクトとして扱うことができることです。これはキューのスケジューリングに非常に便利で、後でリクエスト キューを構築するために使用されます。

余談

コンピュータ業界に初めて参入する人、またはコンピュータ関連の専攻を卒業した人の多くは、実務経験が不足しているため、あらゆるところで障害に遭遇しています。2 つのデータセットを見てみましょう。

  • 2023年の国立大学卒業生は1,158万人に達すると見込まれており、雇用情勢は厳しい。

  • National Network Security Publicity Week が発表したデータによると、2027 年までに我が国のネットワーク セキュリティ人材不足は 327 万人に達すると予想されています。

    新卒者の就職状況は年々厳しい一方で、サイバーセキュリティ人材の不足は100万人規模となっています。

6月9日、MyCOS Researchの雇用ブルーブックの2023年版(2023年の中国の学部生の雇用レポートと2023年の中国の高等職業学生の雇用レポートを含む)が正式にリリースされました。

2022年大学卒業生の月給が高い専攻トップ10

学部のコンピューターサイエンス専攻と高等職業自動化専攻の月収は比較的高いです。コンピューターサイエンス学部と高等職業自動化専攻の2022年クラスの月収は、それぞれ6,863元と5,339元である。このうち、学部コンピューター専攻の初任給は基本的に2021年層と同じだが、高等職業自動化専攻の月収は大幅に増加しており、鉄道交通専攻を追い抜いた2022年層(5295元)が第1位となっている。

具体的には、専攻にもよりますが、2022年学部生で月収が高い専攻は情報セキュリティ(7579元)です。2018年卒業生と比較すると、電子科学技術やオートメーションなど人工知能に関連する学部専攻が好調で、初任給は5年前と比べて19%増加した。データサイエンスとビッグデータテクノロジーは近年新たに追加された専攻ではあるが、2022年度学部生においては卒業半年後の月収が高い専攻のトップ3に入るなど好調に推移している。5年前に高給取り学部ランキングのトップ10に入っていた唯一の人文社会科学専攻であるフランス語は、トップ10から外れた。

「サイバーセキュリティなくして国家安全保障はない」。現在、ネットワークセキュリティは国家戦略の高みにまで高まり、国家安全保障と社会の安定に影響を与える最も重要な要素の一つとなっています。

ネットワークセキュリティ業界の特徴

1. 雇用給与が非常に高く、昇給も早い 2021 年、Liepin.com はネットワーク セキュリティ業界の最高雇用給与を発表し、一人当たり 337,700 元でした!

2. 人材格差が大きく、雇用の機会が多い

2019年9月18日、「中華人民共和国中央人民政府」の公式ウェブサイトは、「我が国には140万人のサイバースペースセキュリティ人材が必要だが、全国の学校が毎年訓練している人材は150万人にも満たない」と発表した。Liepin.com の「2021 年上半期のサイバー セキュリティ レポート」では、サイバー セキュリティ人材の需要は 2027 年に 300 万人になると予測されており、現在サイバー セキュリティ業界に従事している従業員はわずか 10 万人です。

この業界には発展の余地がたくさんあり、雇用もたくさんあります

ネットワーク セキュリティ業界の設立以来、ネットワーク セキュリティ業界で数十の新しい職種が追加されています。ネットワーク セキュリティ エキスパート、ネットワーク セキュリティ アナリスト、セキュリティ コンサルタント、ネットワーク セキュリティ エンジニア、セキュリティ アーキテクト、セキュリティ オペレーションおよびメンテナンス エンジニア、ペネトレーション エンジニア、情報セキュリティ管理などです。データセキュリティエンジニア、ネットワークセキュリティオペレーションエンジニア、ネットワークセキュリティ緊急対応エンジニア、データ鑑定士、ネットワークセキュリティプロダクトマネージャー、ネットワークセキュリティサービスエンジニア、ネットワークセキュリティトレーナー、ネットワークセキュリティ監査人、脅威インテリジェンス分析エンジニア、災害復旧プロフェッショナル、実戦攻防専門家...

素晴らしいキャリアの可能性

ネットワークセキュリティ専攻は強力な技術的特徴を持ち、特にコアネットワークアーキテクチャとセキュリティ技術を仕事で習得することは、キャリア開発においてかけがえのない競争上の優位性をもたらします。

個人の能力の継続的な向上に伴い、自身の経験の豊富さやプロジェクト運営の成熟度に応じて作品の専門的価値も高まり、鑑賞空間は終始強気であり、それが人気の主な理由です。みんなとともに。

ネットワークセキュリティの分野も、ある意味、医師と同じように年齢が上がるほど人気が​​あり、技術も成熟しているので当然仕事が評価され、昇進や昇給も問題となります。もちろん。

ハッキングとサイバーセキュリティを学ぶ方法

今日、私の記事に「高評価」をしていただければ、オンライン セキュリティ学習教材の私個人のコレクションを無料で共有しますので、そこに何があるか見てみましょう。

1. 学習ロードマップ

攻撃や守備でも学ぶべきことはたくさんありますが、具体的に学ぶべきことは上記のロードマップにすべて書きましたので、それを習得できれば就職や民間の仕事に就いても問題ありません。

2. ビデオチュートリアル

インターネット上には多くの学習リソースがありますが、基本的に不完全です。これは私が録画したサイバー セキュリティに関するビデオ チュートリアルです。上記のロードマップのすべての知識ポイントについてサポートするビデオ説明を用意しています。

内容は、ネットワークセキュリティ法の学習、ネットワークセキュリティ運用等の保証評価、ペネトレーションテストの基礎、脆弱性の詳しい説明、コンピュータの基礎知識など、ネットワークセキュリティを始める際に知っておくべき学習内容です。

(すべてが1つの作品に詰まっており、1つずつ展開することはできません。合計300以上のエピソードがあります)

スペースに限りがあるため、情報の一部のみが表示されています。以下のリンクをクリックして入手してください。

CSDN のスプリー: 「ハッカーとネットワーク セキュリティ入門 & 高度な学習リソース パック」無料共有

3. 技術資料と電子書籍

また、大規模なネットワークセキュリティ運用、CTF、SRC脆弱性マイニングに参加した経験や技術的ポイントを含む技術文書も私自身が編集したもので、電子書籍も200冊以上あります。一つ一つ表示しません。

スペースに限りがあるため、情報の一部のみが表示されています。以下のリンクをクリックして入手してください。

CSDN のスプリー: 「ハッカーとネットワーク セキュリティ入門 & 高度な学習リソース パック」無料共有

4. ツールキット、インタビューの質問、ソースコード

「良い仕事をしたいなら、まず自分のツールを磨かなければなりません。」 私は、誰にとっても最も人気のある数十のハッキング ツールをまとめました。取材範囲は主に情報収集、Androidハッキングツール、自動化ツール、フィッシングなどです。興味のある学生はぜひご覧ください。

私のビデオで言及されているケースのソース コードと対応するツールキットもあり、必要に応じて持ち帰ることができます。

スペースに限りがあるため、情報の一部のみが表示されています。以下のリンクをクリックして入手してください。

CSDN のスプリー: 「ハッカーとネットワーク セキュリティ入門 & 高度な学習リソース パック」無料共有

最後に、私が過去数年間で整理したインターネット セキュリティに関する面接の質問があります。インターネット セキュリティの仕事を探しているなら、間違いなく大いに役立つでしょう。

これらの質問は、Sangfor、Qi Anxin、Tencent などの大手企業の面接でよく聞かれます。良い質問や良い洞察があれば、ぜひ共有してください。

参考分析: Sangfor 公式 Web サイト、Qi Anxin 公式 Web サイト、Freebuf、csdn など。

コンテンツの特徴: グラフィック表現を含む明確な構成により、理解しやすくなります。

内容の概要: イントラネット、オペレーティング システム、プロトコル、ペネトレーション テスト、セキュリティ サービス、脆弱性、インジェクション、XSS、CSRF、SSRF、ファイル アップロード、ファイル ダウンロード、ファイル インクルード、XXE、ロジック脆弱性、ツール、SQLmap、NMAP、BP、国境なき医師団…

スペースに限りがあるため、情報の一部のみが表示されています。以下のリンクをクリックして入手してください。

CSDN のスプリー: 「ハッカーとネットワーク セキュリティ入門 & 高度な学習リソース パック」無料共有

おすすめ

転載: blog.csdn.net/Python_0011/article/details/132020824