diff --git a/ts/linkPreviews/linkPreviewFetch.ts b/ts/linkPreviews/linkPreviewFetch.ts index c0c5c4f5faf..869ac073066 100644 --- a/ts/linkPreviews/linkPreviewFetch.ts +++ b/ts/linkPreviews/linkPreviewFetch.ts @@ -1,4 +1,4 @@ -// Copyright 2020 Signal Messenger, LLC +// Copyright 2020-2021 Signal Messenger, LLC // SPDX-License-Identifier: AGPL-3.0-only import { RequestInit, Response } from 'node-fetch'; @@ -13,6 +13,8 @@ import { MIMEType, } from '../types/MIME'; +const USER_AGENT = 'WhatsApp/2'; + const MAX_REQUEST_COUNT_WITH_REDIRECTS = 20; // Lifted from the `fetch` spec [here][0]. @@ -408,7 +410,7 @@ export async function fetchLinkPreviewMetadata( response = await fetchWithRedirects(fetchFn, href, { headers: { Accept: 'text/html,application/xhtml+xml', - 'User-Agent': 'WhatsApp', + 'User-Agent': USER_AGENT, }, signal: abortSignal, }); @@ -504,7 +506,7 @@ export async function fetchLinkPreviewImage( try { response = await fetchWithRedirects(fetchFn, href, { headers: { - 'User-Agent': 'WhatsApp', + 'User-Agent': USER_AGENT, }, size: MAX_IMAGE_CONTENT_LENGTH, signal: abortSignal, diff --git a/ts/test-electron/linkPreviews/linkPreviewFetch_test.ts b/ts/test-electron/linkPreviews/linkPreviewFetch_test.ts index 56d6d6c5b30..201d2274099 100644 --- a/ts/test-electron/linkPreviews/linkPreviewFetch_test.ts +++ b/ts/test-electron/linkPreviews/linkPreviewFetch_test.ts @@ -1,4 +1,4 @@ -// Copyright 2020 Signal Messenger, LLC +// Copyright 2020-2021 Signal Messenger, LLC // SPDX-License-Identifier: AGPL-3.0-only import { assert } from 'chai'; @@ -143,7 +143,7 @@ describe('link preview fetching', () => { sinon.assert.notCalled(warn); }); - it('sends "WhatsApp" as the User-Agent for compatibility', async () => { + it('sends WhatsApp as the User-Agent for compatibility', async () => { const fakeFetch = stub().resolves(makeResponse()); await fetchLinkPreviewMetadata( @@ -157,7 +157,7 @@ describe('link preview fetching', () => { 'https://example.com', sinon.match({ headers: { - 'User-Agent': 'WhatsApp', + 'User-Agent': 'WhatsApp/2', }, }) ); @@ -1273,7 +1273,7 @@ describe('link preview fetching', () => { ); }); - it('sends "WhatsApp" as the User-Agent for compatibility', async () => { + it('sends WhatsApp as the User-Agent for compatibility', async () => { const fakeFetch = stub().resolves(new Response(null)); await fetchLinkPreviewImage( @@ -1287,7 +1287,7 @@ describe('link preview fetching', () => { 'https://example.com/img', sinon.match({ headers: { - 'User-Agent': 'WhatsApp', + 'User-Agent': 'WhatsApp/2', }, }) );