1. 爬虫類の紹介
-
爬虫類とは何ですか?
-
つまり、私たちは常に重要なデータ情報をインターネット上に保存したいと考えています
为己所用
。
例:- 血が沸騰するような素晴らしい写真を閲覧したとき、将来それらをデスクトップの壁紙として保存したいと常に思っていました。
- 重要なデータ (あらゆる分野) を閲覧するときは、将来のさまざまな販売行動に光沢を加えるために保存しておきたいと考えています。
- 奇妙で刺激的なビデオを閲覧するときは、後で味わうためにハードディスクに保存したいと考えています。
- いくつかの優れた歌のトラックを閲覧するとき、私たちの退屈な生活に素晴らしい部分を追加するためにそれらを保存したいと思います
能看见的东西
クロールされるのはの一部である必要があることに注意してください公开
。
レプティリアンの槍と盾
-
反爬机制
:- ポータル Web サイトは、対応する技術的手段 (暗号化) を策定することで、
策略
クローラーが Web サイト データをクロールするのを防ぐことができます。
- ポータル Web サイトは、対応する技術的手段 (暗号化) を策定することで、
-
反反爬策略
(JS 逆引き):- クローラー プログラムは、ポータル Web サイトで
策略或者技术手段
関連する破解
クローリング防止メカニズムを構築することにより、ポータル Web サイト内の関連データを取得できます。
robots.txt プロトコル: Baidu Spider
- クローラー プログラムは、ポータル Web サイトで
-
一般に として知られています
君子协议
。Web サイト内のどのデータが以被爬虫爬取
クロールできるか、どのデータがクロールできないかを指定します。各 Web サイトのサフィックスに robots.txt を追加するだけです。
これはタオバオにおける紳士協定です
2. Web リクエストのプロセス (例として Baidu)
にアクセスすると百度
、ブラウザは请求
今度は Baidu のサーバー (Baidu のコンピュータ) に送信し、サーバーは接收
このリクエストを受信し、データをロードしてブラウザに返し、ブラウザはそれを表示します。 Baidu のサーバーは、ページを直接ブラウザに返すのではなく、页面源代码
(html、css、js で構成される)ページのソース コードを実行し、その浏览器
結果をユーザーに表示します。源代码
理解できない幽霊の山)具体的なプロセスを図に示します。
2.1 ページのレンダリング
ここで、すべてのデータがページのソース コード上にあるわけではないことに注意してください。一部のデータは动态加载
js などのツールを介して取り込まれます。これが页面渲染数据
プロセスです。一般的なページ レンダリング プロセスには 2 つあり、1 つは と呼ばれ服务器渲染
、もう 1 つは と呼ばれます。前端JS渲染
1. サーバーレンダリング -> ページソースコード内でデータを直接検索可能
私たちがサーバーにリクエストすると、サーバーはデータをサーバー全部写入
に直接送信し、ブラウザはデータの HTML コンテンツを運ぶことができます。データは HTML に直接書かれているため、表示できるすべてのデータは This にあります。通常クロールできるWeb ページの種類html
直接拿到
页面源代码
相对比较容易
页面内容
2. フロントエンド JS レンダリング -> ページのソース コードでデータが見つかりません
これは少し面倒です。通常、このメカニズムは、多数の HTML フレーム構造を返すサーバーへの最初のリクエストです。次に、再次请求
データの実際のストレージに服务器
サーバーがデータを返し、最後に にデータが返されます浏览器上对数据进行加载
。次のようになります。
何がロードされていますか? 実際、ページを下にスクロールすると、jd が密かにデータをロードしています。この時点で、このページをロードするプロセス全体を確認したい場合は、ブラウザのデバッグ ツール (F12) を使用する必要があります。
そのため、ページのソース コードでページに表示されているデータが見つからない場合は、デバッグ ツール (F12) で関連する左側を見つけることができ、数据包
データはデータ パッケージに隠されています (最初に F12 デバッグ ツールを開いてからページを更新することを忘れないでください。そうしないとデータがロードされ、データ パケットにコンテンツがありません。)
3. ブラウザツールの使用 (強調)
ブラウザは、Web ページのステータスや Web ページに読み込まれたコンテンツを確認するのに最も直感的な場所です。ボタンF12
を押す通常のユーザーがめったに使用しないいくつかのツールが表示されます。その中で、最初の 4 つは
最も重要ですElements, Console, Sources, Network
1. 要素
要素は us であり实时的网页内容情况
、場合によっては并不是页面源代码
、フロントエンド JS によってレンダリングされたコンテンツも表示されます。これは Web ページのリアルタイムのコンテンツです
知らせ、
页面源代码
これは、js スクリプトとユーザー操作を実行する之前
サーバーによって返されます。最原始的内容
Elements
で見られる内容はjs脚本以及用户操作之后
その時のページ表示効果です。
老师批改之前的卷子
どちらかが で、もう一方が であることがわかります老师批改之后的卷子
。同じ論文ですが、内容は異なります。そして、現時点で入手できるのは、そのページのソースコードです。修正前の先生の様子です。この点は、特別な注意を払う必要があります。
でElements
使えます左上角的小箭头
ブラウザ上で各ブロックの位置が直感的に分かります对应的当前html状况
相変わらず丁寧です。
2. コンソール
2 番目のウィンドウは、Console
プログラマーが残した印刷コンテンツとログコンテンツを表示するために使用され、ここに js コードを入力して自動的に実行できます。
3. ソース
3 番目のウィンドウはSource
、ここに表示されます该网页打开时加载的所有内容
。ページのソース コード、スクリプト、スタイル、画像などが含まれています。
4. ネットワーク
4 番目のウィンドウは、Network
通常、 と呼ばれることがよくあります抓包工具
。つまり、先ほど述べたフロントエンド JS レンダリングがここに表示され、当前网页加载的所有网络请求
と が表示されます请求的详细内容
。これは、クローラーにとって非常に重要です。
4. ハイパーテキスト転送プロトコル
协议
: 2 台のコンピュータ間で円滑な通信を行うために設定されるプロトコルで君子协定
、一般的なプロトコルには TCP/IP、SOAP プロトコル、HTTP プロトコル、SMTP プロトコルなどが含まれます。
プロトコルが異なる 送信データのフォーマットが異なります。
HTTP协议
Hyper Text Transfer Protocol(ハイパーテキスト転送プロトコル)の略で、World Wide Web(WWW:World Wide Web)サーバーからローカルブラウザにハイパーテキストを転送するために使用される転送プロトコルです浏览器和服务器之间的数据交互遵守的就是HTTP协议
。
最も一般的に使用される HTTP プロトコルは です加载网页
。
HTTP プロトコルは、メッセージを3 つのコンテンツに分割します三大块内容
。请求
响应
聞く:
请求行 -> 请求方式(get/post) 请求url地址 协议
请求头 -> 放一些服务器要使用的附加信息(cookie验证,token,各式各样的反扒信息)
请求体 -> 一般放一些请求参数
応答:
状态行 -> 协议 状态码
响应头 -> 放一些客户端要使用的一些附加信息(cookie验证,token,各式各样的反扒信息)
响应体 -> 服务器返回的真正客户端要用的内容(HTML,json)等 页面代码
クローラーを作成するときは特に注意してください请求头和响应头
。これら 2 つの場所は通常、隐含着一些比较重要的内容
注意
では、ブラウザが実際にHTTPリクエストとレスポンスの内容を再構成し、私たちにとって読みやすい効果として表示しています。
リクエストヘッダーの最も重要なコンテンツの一部常见
(クローラーが必要とする):
User-Agent
: リクエストのキャリア身份标识
(リクエストの送信に使用されるもの)Referer
:防盗链
(このリクエストはどのページから来たものですか? アンチクロールが使用されます)cookie
:ローカル文字列データ情報(ユーザーログイン情報、登山防止トークン)Content-Type
: サーバーはクライアントに応答します数据类型
(str、json など)。
応答ヘッダーの一部重要的内容
:
- cookie: ローカル文字列データ情報 (ユーザーのログイン情報、クローリング防止トークン)
- あらゆる種類の魔法の
莫名其妙
文字列 (これには、さまざまな攻撃やアンチクライミングを防ぐための経験、通常は単語トークンが必要です)
httpsプロトコル
とほぼhttp协议
同じです。s
「安全」を意味し、「」を意味します安全的超文本传输协议
。(データ暗号化)
暗号化方式(3種類)
1. 対称鍵暗号化
これは、暗号化が完了した後、クライアントが最初に、サーバーがそのキーを使用して暗号文データを復号化し、最後に暗号化を解除することを将即将发送给服务器端的数据
意味します。数据加密
加密的方式是由客户端自己指定的
密文包括解密的方式(密钥)一块发送给服务器端
接收到了密钥和加密的密文数据
服务器端会获得原文数据
-
デメリット
-
- キーと暗号文が処理されると
数据传输的过程中
、サードパーティ組織が拦截
それを入手する可能性が非常に高くなります存在数据暴露的风险
。
- キーと暗号文が処理されると
2. 非対称キー暗号化
対称暗号化の潜在的な安全上の危険を目的として、改良された暗号化方式が使用されています。使用時には 2 つのロックがあり、1 つは「 」、もう 1 つは「 」と呼ばれます。非オブジェクト暗号化を使用する場合、サーバーは最初にクライアントに通知し私有密钥
ます公开密钥
。公开密钥
た加密处理
クライアントが指示に従っ公开密钥加密
、サーバーは情報を受信し、自己的私有密钥
それを復号化します。この利点は解密的钥匙根本就不会进行传输
です避免了被挟持的风险
。たとえ盗聴者によって公開鍵が入手されたとしても、復号処理は離散対数を評価することになるため、復号することは困難です。
-
欠点:
-
- 1.
效率比较低
、処理がより複雑であり、通信プロセスに一定の効率の問題があります影响通信速度
。 - 2. 鍵を送信する限り、乗っ取られる危険性があるため、仲介機関が
公钥篡改
クライアントに送信する場合、不能保证
クライアントが取得した公開鍵はサーバーで作成する必要があります。
- 1.
3. 証明書キーの暗号化
非対称キー暗号化の欠陥を考慮すると、クライアントが取得した公開キーがサーバーによって作成される必要があることを保証できないため、証明書キー暗号化が導入されています。
サーバーの開発者は を持ち公开密钥
、向数字证书认证机构提出公开密钥的申请
デジタル証明書認証局は认清申请者的身份
審査に合格した後、开发者申请
公開鍵を作成し数字签名
、分配这个已经签名的公开密钥
その鍵证书
を内部に入れてバインドします。
クライアントはデジタル証明書のデジタル署名を使用して、サーバーから渡された公開キーが本物であることを確認するため、サーバーは数字证书发送给客户端
これを使用します。一般に、それは認証機関の信頼性に依存します。情報が正しいことが確認されると、その情報はメッセージを通過し、受信後に独自の情報を使用します。客户端也认可证书机构
验证公钥的真伪
证书的数字签名很难被伪造的
客户端
公钥
加密发送
服务器
私钥进行解密
V. まとめ
- 必要なものはページのソースコードにあり、
源代码
抽出されたデータを直接取得するだけです - 必要なものはページのソース コードに含まれていないため、データをロードするための実際のリクエストを見つける方法を見つけて、データを抽出する必要があります。
- 注意遵守
君子协定
- リクエストヘッダーの共通コンテンツ:
User-Agent
、referer
、cookie
、Content-Type