ImportantV1 deprecation and removal noticeStarting in Fusion 5.12.0, all V1 connectors are deprecated. This means they are no longer being actively developed and will be removed in Fusion 5.13.0.The replacement for this connector is the Web V2 connector.If you are using this connector, you must migrate to the replacement connector or a supported alternative before upgrading to Fusion 5.13.0. We recommend migrating to the replacement connector as soon as possible to avoid any disruption to your workflows.
Crawl options
- If you’re crawling a website protected by a login or SmartForm, see Crawl an Authenticated Website with the Web Connector.
- If you’re crawling a CMS or ecommerce site, you may want to Deduplicate Web Content using Canonical Tags.
- To prevent unbounded crawls or to only crawl a portion of your website, see Limit the Crawl Scope for Web Sites.
Crawl an Authenticated Website with the Web Connector
Crawl an Authenticated Website with the Web Connector
This article explains how to use the Web V1 connector to crawl a website that is protected by SSO, SAML, or OAuth.
The Microsoft identity platform also requires JavaScript to authenticate, which means you must also configure the connector to use JavaScript Evaluation.Here is an example of three different parameters where your site might ask one of three questions randomly:To enable high-performance JavaScript evaluation, you must install some dependencies, then set
Overview
This example uses SharePoint Online, a website that uses the Microsoft identity platform.To crawl a website behind a login, configure the Web connector to authenticate with valid login credentials. In this example, there is also a final prompt to stay signed in. Configure the connector to use the SAML/Smart Form authentication method.
Prerequisites
Before you can configure the Web connector, you must locate and copy the login parameters from the website you’re trying to crawl.- Open a private or incognito window in your internet browser. This example uses Google Chrome.
- Navigate to the site that you want to crawl with authentication.
-
Identify the URL for the login page.
For example, from
http://some-website-with-auth.com
, navigate to the page that displays the login form, then copy the page URL, such ashttp://some-website-with-auth.com/sso/login
. Use this URL as the value of theloginUrl
parameter (URL in the Fusion UI). -
On the login page, identify the fields used for inputting the username and password.
You can do this by right-clicking on the form fields and selecting Inspect element to open the developer tools, where the corresponding HTML element is highlighted.
In most cases it is an
<input>
element that has aname
attribute and you can specify the field as this name value. For example: -
Add the username field as a parameter to the authentication section of the Web connector. The Property Name is
login
and the Property Value is the username the connector will use to log in. -
Add the password field name as the
passwordParamName
(Password Parameter in the Fusion UI). -
On the site login page, right-click Submit (or equivalent) and select Inspect element.
- If the button is an
<input type="submit"/>
, then the SmartForm login picks it up automatically. - If the button is another element (such as
<button>
,<a>
,<div>
, and so on) then you must add a parameter with the special prefix::submitButtonXPath::
, then add an XPath expression that points to the submit button. For example:::submitButtonXPath:://button[@name='loginButton']
- If the button is an
-
If there is no
name
attribute on the<input>
elements, then you must specify a parameter to tell the Web connector how to find the input element. You can use any of these special selector formats for the parameter name:
What is the name of your first dog?
In this case add another special parameter:Configure Web connector
Configure the connector to use login credentials and JavaScript to successfully authenticate through your website.- In Fusion, navigate to Indexing > Datasources.
- Click Add, then select Web (v1) (in Fusion 5.12, select Web (Deprecated)) from the dropdown.
- Configure the datasource and fill in required fields.
-
Expand Crawl Authorization, scroll down to SAML/Smart Form Authentication, then click Add.
- Enter the URL of the website that requires authentication.
- Enter the password to use for the authentication request.
- Set the TTL (ms) so there is enough time to load the form pieces on the page before Fusion attempts to run the Smart Form step.
-
Add Parameters as needed. For example, if the login page requires you to enter your name in addition to a password, add a parameter, specifying the Property Name and Property Value. Add a parameter for every required field on the login page.
- If applicable, create a SAML/Smart Form Authentication for every subsequent login page. These steps trigger from top to bottom.
-
Expand the JavaScript Evaluation section and enable Evaluate JavaScript during SmartForm Authentication. Enable Evaluate Javascript if you would like to use a JavaScript evaluation engine for all requests, not just the authentication.
You can find the Property Name and Property Value for any given step on the login page. Use your browser’s Developer Tools to inspect the input field, then copy the XPath.
Install Chromium dependencies (Fusion 4.x only)
This section only applies to 4.x.x releases. For 5.x.x releases, Chrome dependencies are already installed in the Docker container.
f.crawlJS
/“Evaluate JavaScript” and f.useHighPerfJsEval
/“High Performance Mode” to “true”.Enable high-performance mode with Chromium-
Install the dependencies, using one of the scripts packaged with Fusion:
- Windows:
https://FUSION_HOST:FUSION_PORT/bin/install-high-perf-web-deps.ps1
- Linux and OSX:
https://FUSION_HOST:FUSION_PORT/bin/install-high-perf-web-deps.sh
- Windows:
-
In the Fusion UI, configure your Web data source:
- Set Evaluate Javascript to “true”.
- Set High Performance Mode to “true”.
f.headlessBrowser
parameter can be set to “false” to display the browser windows during processing. It is “true” by default. Non-headless mode is available only using the “High-performance” mode. - Save the datasource configuration.
If Fusion is running on Docker, you must either mount an
shm
directory using the argument -v /dev/shm:/dev/shm
or use the flag --shm-size=2g
to use the host’s shared memory. The default shm size 64m
will result in failing crawls with logs showing error messages like org.openqa.selenium.WebDriverException: Failed to decode response from marionette
. See Geckodriver issue 1193 for more details.Test the configuration
- In Fusion, navigate to Indexing > Datasources.
- Click on the web connector you configured.
- Set your Fetch Threads and Emit Threads. It simplifies testing when only one thread is trying to authenticate at a time.
- Expand Crawl Performance.
- Set Fetch Threads and Emit Threads to
1
.
- Enable Diagnostic logging. Diagnostic mode will allow the HTML contents to print out in the logs for each step of the log on process, so you can use that to see what the browser doing. This can be useful because you can see where the browser was when/if you got into a bad state.
- Toggle Advanced to view advanced settings.
- Enable Diagnostic mode.
- Headless mode (Fusion 4.x only). If you are on a Windows Server or have the ability to install Fusion somewhere an active desktop environment is available, such as Mac or Linux with Desktop, you can use
headless mode = false
to test with an actual web browser.- Expand JavaScript Evaluation.
- Disable Headless Browser.
- When you run the crawl, a browser window opens and performs the log in process.
- Click Run to start the datasource job. Review results in the Query Workbench.
Deduplicate Web Content using Canonical Tags
Deduplicate Web Content using Canonical Tags
Limit the Crawl Scope for Web Sites
Limit the Crawl Scope for Web Sites
The Web V1 connector retrieves data from a Web site using HTTP and starting from a specified URL.The connector works by going to the seed page (the
startURIs
specified in the configuration form), collecting the content for indexing, and extracting any links to other pages.
It then follows those links to collect content on other pages, extracting links to those pages, and so on.When creating a Web data source, pay attention to the Max crawl depth and Restrict To Tree parameters (c.depth
and c.restrictToTree
in the REST API).
These properties limit the scope of your crawl to prevent an unbounded crawl that could continue for a long time,
particularly if you are crawling a site with links to many pages outside the main site. An unbounded crawl can also cause memory errors in your system.The connector keeps track of URIs it has seen, and many of the properties relate to managing the resulting database of entries.
If the connector finds a standard redirect, it tracks that the redirected URI has an alias, and does not re-evaluate the URI on its next runs until the alias expiration has passed.
If deduplication is enabled, documents that were found to be duplicates are also added to the alias list and are not re-evaluated until the alias expiration has passed.Regular expressions can be used to restrict the crawl either by defining URI patterns that should be followed or URI patterns that should not be followed.Additionally, specific patterns of the URI can be defined to define URIs that should not be followed.sitemap_incremental_crawling
configuration parameter processes and crawls URLs found in the sitemap. Set to true
to remove documents from the index when they can no longer be accessed as unique documents. For example, if the page is removed from the sitemap and cannot be accessed. In addition, if the page is not in the sitemap, the connector classifies the missing page as unbounded and removes the page from the index.
Configuration
When entering configuration values in the UI, use unescaped characters, such as
\t
for the tab character. When entering configuration values in the API, use escaped characters, such as \\t
for the tab character.If you experience CrawlDB errors such as “File is already opened and is locked”, then raise the Alias Expiration setting.