From e939585c172825c2984599387d7d23fdffd1fab7 Mon Sep 17 00:00:00 2001 From: absidue <48293849+absidue@users.noreply.github.com> Date: Wed, 9 Feb 2022 18:34:35 +0100 Subject: [PATCH] Add workflow to update the user agents once a month --- .github/updateUserAgents.js | 19 ++++++++++ .github/workflows/update-user-agents.yml | 48 ++++++++++++++++++++++++ play-dl/Request/useragent.ts | 13 +------ play-dl/Request/useragents.json | 12 ++++++ 4 files changed, 80 insertions(+), 12 deletions(-) create mode 100644 .github/updateUserAgents.js create mode 100644 .github/workflows/update-user-agents.yml create mode 100644 play-dl/Request/useragents.json diff --git a/.github/updateUserAgents.js b/.github/updateUserAgents.js new file mode 100644 index 0000000..f47d33e --- /dev/null +++ b/.github/updateUserAgents.js @@ -0,0 +1,19 @@ +const { writeFileSync } = require('fs'); +const UserAgent = require('user-agents'); + +const generator = new UserAgent({ deviceCategory: 'desktop' }); +const userAgents = []; + +for (let i = 0; i < 10; i++) { + let userAgent = generator.random(); + + // only use Windows and Linux user agents and exclude Internet Explorer ones + while (!(userAgent.data.platform.startsWith('Win') || userAgent.data.platform.startsWith('Linux')) + || userAgent.data.userAgent.includes('; MSIE') || userAgent.data.userAgent.includes('Trident/')) { + userAgent = generator.random(); + } + + userAgents.push(userAgent.toString()); +} + +writeFileSync('play-dl/Request/useragents.json', JSON.stringify(userAgents, null, 4)); diff --git a/.github/workflows/update-user-agents.yml b/.github/workflows/update-user-agents.yml new file mode 100644 index 0000000..6eaa37f --- /dev/null +++ b/.github/workflows/update-user-agents.yml @@ -0,0 +1,48 @@ +name: 'Update user agents' +on: + schedule: + - cron: '0 0 1 * *' + workflow_dispatch: + +jobs: + build: + runs-on: ubuntu-latest + + name: Update user agents + steps: + - name: Clone repository + uses: actions/checkout@v2 + + - name: Setup node + uses: actions/setup-node@v2 + with: + node-version: 17 + registry-url: 'https://registry.npmjs.org' + cache: 'npm' + + - name: Create and checkout automated/update-user-agents branch + run: | + git branch 'automated/update-user-agents' main + git checkout 'automated/update-user-agents' + + - name: Install dependencies + run: npm install user-agents + + - name: Run update script + run: node .github/updateUserAgents.js + + - name: Commit changes + run: | + git config user.name 'github-actions[bot]' + git config user.email 'github-actions[bot]@users.noreply.github.com' + + git add play-dl/Request/useragents.json + git commit --message '[Automated] Update user agents' + + - name: Push and create pull request + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: | + git push --set-upstream origin automated/update-user-agents + useragents=$(cat play-dl/Request/useragents.json | jq -r '"New user agents:\n- " + join("\n- ")') + gh pr create --title '[Automated] Update user agents' --body "$useragents" --head 'automated/update-user-agents' diff --git a/play-dl/Request/useragent.ts b/play-dl/Request/useragent.ts index 03adff6..84576a8 100644 --- a/play-dl/Request/useragent.ts +++ b/play-dl/Request/useragent.ts @@ -1,15 +1,4 @@ -const useragents: string[] = [ - "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.81 Safari/537.36", - "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.81 Safari/537.36", - "Mozilla/5.0 (Windows NT 10.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.81 Safari/537.36", - "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:97.0) Gecko/20100101 Firefox/97.0", - "Mozilla/5.0 (X11; Linux i686; rv:97.0) Gecko/20100101 Firefox/97.0", - "Mozilla/5.0 (Linux x86_64; rv:97.0) Gecko/20100101 Firefox/97.0", - "Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:97.0) Gecko/20100101 Firefox/97.0", - "Mozilla/5.0 (X11; Fedora; Linux x86_64; rv:97.0) Gecko/20100101 Firefox/97.0", - "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.81 Safari/537.36 Edg/97.0.1072.69", - "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.81 Safari/537.36 Vivaldi/4.3" -]; +import useragents from './useragents.json'; export function setUserAgent(array: string[]): void { useragents.push(...array); diff --git a/play-dl/Request/useragents.json b/play-dl/Request/useragents.json new file mode 100644 index 0000000..ee11d9a --- /dev/null +++ b/play-dl/Request/useragents.json @@ -0,0 +1,12 @@ +[ + "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.81 Safari/537.36", + "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.81 Safari/537.36", + "Mozilla/5.0 (Windows NT 10.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.81 Safari/537.36", + "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:97.0) Gecko/20100101 Firefox/97.0", + "Mozilla/5.0 (X11; Linux i686; rv:97.0) Gecko/20100101 Firefox/97.0", + "Mozilla/5.0 (Linux x86_64; rv:97.0) Gecko/20100101 Firefox/97.0", + "Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:97.0) Gecko/20100101 Firefox/97.0", + "Mozilla/5.0 (X11; Fedora; Linux x86_64; rv:97.0) Gecko/20100101 Firefox/97.0", + "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.81 Safari/537.36 Edg/97.0.1072.69", + "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.81 Safari/537.36 Vivaldi/4.3" +] \ No newline at end of file