

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# Web 編目程式
<a name="kb-managed-ds-webcrawler"></a>

Web 爬蟲程式會連接至您指定的 URLs並編目，以便在受管知識庫中使用。Web 爬蟲程式會從種子 URLs 開始周遊 HTML 頁面，並根據您的爬蟲範圍和限制遵循子連結。您也可以提供網站地圖 URLs做為起點。Web Crawler 遵守符合 [RFC 9309 ](https://www.rfc-editor.org/rfc/rfc9309.html)的 robots.txt。

**重要**  
當您選取要抓取的網站時，必須遵守 [Amazon 可接受的使用政策和](https://aws.amazon.com/aup/)所有其他 Amazon 術語。僅使用 Web 爬蟲程式來為您自己的網頁或您有權進行爬蟲的網頁編製索引。

**注意**  
Web 爬蟲程式不支援文件層級存取控制 (ACLs)。可存取知識庫的任何使用者皆可存取所有索引內容。如果您需要 ACL 篩選，請使用支援它的連接器 （例如 Amazon S3、SharePoint 或 OneDrive)。

## 支援的功能
<a name="kb-managed-supported-features-webcrawler"></a>
+ 編目多個種子 URLs和網站地圖 URLs
+ 可設定的爬蟲深度、速率限制和links-per-URL限制
+ 爬取範圍控制：相同的主機和路徑、僅限主機，或主機和子網域
+ URL 模式篩選條件 （包含和排除規則表達式）
+ 從網頁連結的編目附件 PDFs、文件等）
+ 受保護網站的身分驗證：基本、表單型或 SAML
+ 新增、更新和刪除內容的增量內容同步

## 身分驗證方法
<a name="kb-managed-webcrawler-auth-methods"></a>

Web 爬蟲程式支援四種身分驗證方法。選擇符合目標網站對使用者進行身分驗證的方法。對於沒有登入的公有網站，請使用 `NO_AUTH`。


**Web 爬蟲程式身分驗證方法**  

| Method | 如何進行身分驗證 | 使用情況 | 
| --- | --- | --- | 
| 無身分驗證 (NO\_AUTH) | 爬蟲程式在沒有登入資料的情況下傳送請求。 | 不需要登入的公有網站。 | 
| 基本身分驗證 (BASIC\_AUTH) | 爬蟲程式會從秘密傳送包含使用者名稱和密碼的 HTTP Authorization: Basic標頭。 | 受 HTTP 基本身分驗證保護的網站 （瀏覽器型使用者名稱和密碼對話方塊）。 | 
| 表單身分驗證 (FORM) | 爬蟲程式透過提交 HTML 表單登入。您提供尋找表單欄位的登入 URL、登入資料和 XPath 表達式。 | 使用 HTML 表單登入的站台。 | 
| SAML 身分驗證 (SAML) | 爬蟲程式會透過 SAML 身分提供者的登入表單登入。您可以提供尋找表單欄位的 IdP 登入 URL、登入資料和 XPath 表達式。 | 使用 SAML 型單一登入的站台。 | 

## 先決條件
<a name="kb-managed-prereqs-webcrawler"></a>

**對於您要抓取的網站，請確定您**：
+ 具有抓取網站及其內容的許可。
+ 確認 `robots.txt` 網站不允許您要抓取URLs。如果找不到`robots.txt`檔案，Web 爬蟲程式預設為不允許 。
+ 如果網站需要登入，請識別身分驗證方法 （基本、表單或 SAML)。對於表單和 SAML，找到登入頁面上使用者名稱欄位、密碼欄位的 XPath 表達式，然後提交按鈕。若要尋找 XPath，請在瀏覽器中的表單元素上按一下滑鼠右鍵，然後選擇**檢查**，然後從開發人員工具複製 XPath。

**在您的帳戶中 AWS ，請確定您**：
+ 如果您的網站需要身分驗證，請將您的登入資料存放在[AWS Secrets Manager 秘密](https://docs.aws.amazon.com/secretsmanager/latest/userguide/create_secret.html)中，並記下其 Amazon Resource Name (ARN)。如需確切的鍵/值對，請參閱 [驗證憑證](#kb-managed-webcrawler-credentials)。
+ 在知識庫的 AWS Identity and Access Management (IAM) 角色/許可政策中包含連接到資料來源的必要許可。如需必要許可的資訊，請參閱 [存取您的資料來源的許可](kb-permissions.md#kb-permissions-access-ds)。

## 如何設定 Web 爬蟲程式資料來源
<a name="kb-managed-webcrawler-workflow"></a>

設定 Web 爬蟲程式資料來源包含下列步驟：

1. **（如果您的網站需要登入） 準備登入資料。**將身分驗證方法的登入資料存放在 AWS Secrets Manager 秘密中。請參閱 [驗證憑證](#kb-managed-webcrawler-credentials)。

1. **連接資料來源。**使用 AWS 管理主控台 或 API 在知識庫中建立 Web 爬蟲程式資料來源。請參閱 [建立資料來源](#kb-managed-ds-webcrawler-create)。

## 建立資料來源
<a name="kb-managed-ds-webcrawler-create"></a>

------
#### [ Console ]

**將 Web 爬蟲程式連接至您的受管知識庫**

1. 在**資料來源**下，提供資料來源的名稱。

1. 從資料來源下拉式清單中選取 **Web 爬蟲程式**。

1. 在**來源**下，選擇**來源 URLs**（最多 10 URLs) 或**來源網站地圖** （最多 3 個網站地圖 URLs)。

1. 在新增 URLs文字區域中輸入您的 URL，每行一個。 ** URLs** 

1. 在**身分**驗證下，選取**無身分驗證**、**基本身分驗證**、**表單身分驗證**或 **SAML 身分驗證**。對於**無身分驗證**以外的任何方法，請選取或建立 AWS Secrets Manager 秘密來存放您的登入資料。

1. （選用） 展開**同步範圍**以設定網路爬取深度 (0–10)、每個 URL 的連結上限 (1–1000)、每分鐘網路爬取URLs 上限 (1–300)，以及網路爬取範圍：**預設** （與種子 URL 相同的主機和相同的初始 URL 路徑）、**僅限主機** （相同的主機、任何路徑） 或**子網域** （包括子網域）。

1. （選用） 展開 **URL 篩選模式**，以新增包含或排除特定 URLs規則運算式。

------
#### [ API ]

若要建立 Web 爬蟲程式資料來源，請使用 Amazon Bedrock 建置時間端點的代理程式傳送 [CreateDataSource](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_CreateDataSource.html) 請求。下列 AWS Command Line Interface 範例會建立資料來源，在沒有身分驗證的情況下爬取公有網站。如需每個欄位的說明，請參閱以下連接器參數參考。

```
aws bedrock-agent create-data-source \
 --name "{{WebCrawler-connector}}" \
 --knowledge-base-id "{{your-knowledge-base-id}}" \
 --data-source-configuration file://webcrawler-managed-connector.json
```

`webcrawler-managed-connector.json` 檔案包含下列項目：

```
{
    "type": "MANAGED_KNOWLEDGE_BASE_CONNECTOR",
    "managedKnowledgeBaseConnectorConfiguration": {
        "connectorParameters": {
            "type": "WEB",
            "version": "1",
            "connectionConfiguration": {
                "seedUrls": [
                    "{{https://docs.example.com}}"
                ],
                "authType": "NO_AUTH"
            },
            "crawlConfiguration": {
                "crawlDepth": 3,
                "maxLinksPerUrl": 100,
                "maxCrawledUrlsPerMinute": 50,
                "syncScope": "SUB_DOMAINS",
                "crawlAttachments": true
            },
            "filterConfiguration": {
                "exclusionPatterns": [
                    "{{https://docs.example.com/private/.*}}"
                ]
            }
        }
    }
}
```

對於已驗證的網站，請將 `authType`設定為 `BASIC_AUTH`、 `FORM`或 `SAML`，並將 新增至 `secretArn` `connectionConfiguration`。

對於受管知識庫， `CreateDataSource`是非同步的：當操作完成`CREATING``AVAILABLE`時，資料來源狀態會從 轉換為 。

------

## 連接器參數
<a name="kb-managed-config-webcrawler"></a>

資料來源組態使用下列連接器參數。若要使用 Web 爬蟲程式，請在 中指定 `WEB`做為連接器類型`connectorParameters`。如需包裝的欄位 `connectorParameters`（例如 `deletionProtectionConfiguration`和 `mediaExtractionConfiguration`)，請參閱 [連接資料來源](kb-managed-connect-ds.md)。


**connectionConfiguration**  

| 欄位 | 必要 | 說明 | 
| --- | --- | --- | 
| seedUrls | 有條件 | 要開始爬取的種子 URLs清單。上限為 10。除非您提供 ，否則為必要項目siteMapUrls。 | 
| siteMapUrls | 有條件 | 網站地圖 URLs的清單。最多 3 個。除非您提供 ，否則為必要項目seedUrls。 | 
| authType | 是 | 身分驗證類型：NO\_AUTH、FORM、 BASIC\_AUTH或 SAML。請參閱 [身分驗證方法](#kb-managed-webcrawler-auth-methods)。 | 
| secretArn | 有條件 | 包含您登入資料的 AWS Secrets Manager 秘密 ARN。當 authType 不是 時為必要NO\_AUTH。 | 


**crawlConfiguration （選用）**  

| 欄位 | 必要 | 說明 | 
| --- | --- | --- | 
| crawlDepth | 否 | 爬蟲深度上限。範圍 0–10。 0 僅編目指定的 URLs；較高的值遵循更深入網站的連結。預設為 2。 | 
| maxLinksPerUrl | 否 | 每個 URL 要遵循的最大連結數。範圍 1–1000。預設為 100。 | 
| maxCrawledUrlsPerMinute | 否 | 每分鐘爬取的 URLs 上限 （速率限制）。範圍 1–300。 | 
| implicitWaitInSeconds | 否 | 爬蟲程式讀取頁面之前，頁面到達就緒狀態後的等待時間，以秒為單位。針對具有在主要範本之後載入的動態 JavaScript 內容的頁面，增加此值。 | 
| syncScope | 否 | 要遵循的連結範圍。其中一個 PATH\_SPECIFIC（與種子 URL 相同的主機和相同的初始 URL 路徑）、 DOMAINS\_ONLY （與種子 URL 相同的主機、任何路徑） 或 SUB\_DOMAINS（與主要網域相同，包括子網域）。省略時，爬蟲程式只會爬取與種子 URL 相同的主機和相同的初始 URL 路徑。 | 
| crawlAttachments | 否 | 是否從網頁編目連結的檔案和附件 （例如 PDFs和其他文件）。 | 


**filterConfiguration （選用）**  

| 欄位 | 必要 | 說明 | 
| --- | --- | --- | 
| inclusionPatterns | 否 | 規則表達式的清單。只有符合至少一個模式URLs 才會編目和編製索引。 | 
| exclusionPatterns | 否 | 規則表達式的清單。符合任何模式URLs 不會編目或編製索引。 | 
| maxFileSizeInMegaBytes | 否 | 爬蟲程式擷取之任何單一檔案的大小上限，以 MB 為單位。提供 做為數值字串 （例如，"500")。預設為 "500"。 | 

## 驗證憑證
<a name="kb-managed-webcrawler-credentials"></a>

如果您的網站需要身分驗證，請將您的登入資料存放在秘密 AWS Secrets Manager 中。秘密格式取決於您選擇的身分驗證類型。

**基本身分驗證 (`BASIC_AUTH`)**

```
{
    "userName": "{{your-username}}",
    "password": "{{your-password}}",
    "authentication": "BASIC_AUTH"
}
```

**表單身分驗證 (`FORM`)**

對於表單型身分驗證，請提供 XPath 表達式，以識別登入頁面上的使用者名稱欄位、密碼欄位和提交按鈕。

```
{
    "authentication": "FORM",
    "loginPageUrl": "{{https://example.com/login}}",
    "userName": "{{your-username}}",
    "password": "{{your-password}}",
    "userNameFieldXpath": "{{//input[@name='username']}}",
    "passwordFieldXpath": "{{//input[@name='password']}}",
    "userNameButtonXpath": "{{//button[@type='submit']}}",
    "passwordButtonXpath": "{{//button[@type='submit']}}"
}
```

**SAML 身分驗證 (`SAML`)**

針對 SAML 身分驗證，請為表單欄位提供 SAML 身分提供者的登入頁面 URL 和 XPath 運算式。

```
{
    "authentication": "SAML",
    "loginPageUrl": "{{https://your-idp.example.com/login}}",
    "userName": "{{your-username}}",
    "password": "{{your-password}}",
    "userNameFieldXpath": "{{//input[@name='username']}}",
    "passwordFieldXpath": "{{//input[@name='password']}}",
    "userNameButtonXpath": "{{//button[@type='submit']}}",
    "passwordButtonXpath": "{{//button[@type='submit']}}"
}
```

**注意**  
若要在瀏覽器中尋找 XPath，請在登入頁面上的表單元素上按一下滑鼠右鍵，然後選擇**檢查**。在開發人員工具中，在反白顯示的 HTML 上按一下滑鼠右鍵，選擇**複製**，然後選擇**複製 XPath**。

## 疑難排解
<a name="kb-managed-ds-webcrawler-troubleshooting"></a>


**常見的 Web 爬蟲程式問題、原因和修正**  

| 徵狀 | 可能原因 | 修正 | 
| --- | --- | --- | 
| 同步已成功完成，但只會編製種子 URL 的索引。 | 網站導覽連結是透過 JavaScript 事件處理常式 （按一下、捲動、動態功能表） 而非標準<a href="...">元素進行路由。爬蟲程式會轉譯 JavaScript，但不模擬使用者互動，因此無法探索這些連結。 | 為您要編目的頁面提供額外的種子 URLs，或提供網站地圖 URL，列出要編目的每個 URL。如果內容可以匯出為檔案，請考慮改用 Amazon S3 連接器。 | 
| 同步不會傳回任何內容或少於預期的頁面。 | 網站的 robots.txt 檔案不允許您要抓取URLs，或頁面具有noindex中繼標籤。 | robots.txt 更新主機，以允許您想要抓取的路徑，或從您想要編製索引的頁面中移除noindex中繼標籤。robots.txt 如果您也想要中繼標籤偵測，請勿在 中封鎖頁面，因為爬蟲程式必須存取頁面才能讀取中繼標籤。 | 
| 身分驗證失敗 (HTTP 401 或 403、登入重新導向迴圈或工作階段逾時）。 | 登入資料不正確或過期，或 XPath 表達式與登入頁面元素不相符。 | 驗證秘密中的登入資料。對於 SAML FORM或 驗證，請驗證瀏覽器開發人員工具中的每個 XPath，並驗證 loginPageUrl。 | 
| 同步失敗，速率限制 (HTTP 429) 或不完整的內容。 | 爬蟲程式擷取頁面的速度超過網站允許的速度。 | 降低 maxCrawledUrlsPerMinute，或在頁面就緒後載入動態內容implicitWaitInSeconds的網站增加 。 | 
| 頁面因為大於預期而遺失。 | 頁面或附件超過 maxFileSizeInMegaBytes。 | 增加 maxFileSizeInMegaBytes，或接受未擷取大於限制的檔案。 | 