apify-fingerprint-datapoints 0.0.2__tar.gz → 0.0.3__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (136) hide show
  1. {apify_fingerprint_datapoints-0.0.2 → apify_fingerprint_datapoints-0.0.3}/.eslintrc.json +9 -10
  2. {apify_fingerprint_datapoints-0.0.2 → apify_fingerprint_datapoints-0.0.3}/.github/ISSUE_TEMPLATE/bug_report.md +3 -3
  3. {apify_fingerprint_datapoints-0.0.2 → apify_fingerprint_datapoints-0.0.3}/.github/ISSUE_TEMPLATE/feature_request.md +0 -1
  4. {apify_fingerprint_datapoints-0.0.2 → apify_fingerprint_datapoints-0.0.3}/.github/ISSUE_TEMPLATE/question.md +7 -8
  5. apify_fingerprint_datapoints-0.0.3/.github/workflows/browserforge-compat-test.yml +57 -0
  6. apify_fingerprint_datapoints-0.0.3/.github/workflows/check-pr-title.yml +14 -0
  7. apify_fingerprint_datapoints-0.0.3/.github/workflows/e2e-benchmark.yml +46 -0
  8. apify_fingerprint_datapoints-0.0.3/.github/workflows/model-updater.yml +171 -0
  9. apify_fingerprint_datapoints-0.0.3/.github/workflows/release-publish.yml +63 -0
  10. apify_fingerprint_datapoints-0.0.3/.github/workflows/release_python.yaml +26 -0
  11. {apify_fingerprint_datapoints-0.0.2 → apify_fingerprint_datapoints-0.0.3}/.github/workflows/test-and-sync.yml +26 -23
  12. apify_fingerprint_datapoints-0.0.3/.github/workflows/update-new-issue.yml +25 -0
  13. apify_fingerprint_datapoints-0.0.3/.prettierignore +5 -0
  14. apify_fingerprint_datapoints-0.0.3/.prettierrc +1 -0
  15. {apify_fingerprint_datapoints-0.0.2 → apify_fingerprint_datapoints-0.0.3}/CONTRIBUTING.md +11 -11
  16. apify_fingerprint_datapoints-0.0.3/LICENSE.md +201 -0
  17. apify_fingerprint_datapoints-0.0.3/PKG-INFO +234 -0
  18. {apify_fingerprint_datapoints-0.0.2 → apify_fingerprint_datapoints-0.0.3}/README.md +20 -32
  19. {apify_fingerprint_datapoints-0.0.2 → apify_fingerprint_datapoints-0.0.3}/apify_fingerprint_datapoints/CHANGELOG.md +5 -0
  20. {apify_fingerprint_datapoints-0.0.2 → apify_fingerprint_datapoints-0.0.3}/apify_fingerprint_datapoints/README.md +0 -1
  21. apify_fingerprint_datapoints-0.0.3/apify_fingerprint_datapoints/py.typed +0 -0
  22. apify_fingerprint_datapoints-0.0.3/eslint.config.mjs +38 -0
  23. {apify_fingerprint_datapoints-0.0.2 → apify_fingerprint_datapoints-0.0.3}/jest.config.js +10 -10
  24. {apify_fingerprint_datapoints-0.0.2 → apify_fingerprint_datapoints-0.0.3}/package-lock.json +4363 -4635
  25. {apify_fingerprint_datapoints-0.0.2 → apify_fingerprint_datapoints-0.0.3}/package.json +24 -15
  26. {apify_fingerprint_datapoints-0.0.2 → apify_fingerprint_datapoints-0.0.3}/packages/fingerprint-generator/package.json +3 -3
  27. apify_fingerprint_datapoints-0.0.3/packages/fingerprint-generator/src/data_files/fingerprint-network-definition.zip +0 -0
  28. {apify_fingerprint_datapoints-0.0.2 → apify_fingerprint_datapoints-0.0.3}/packages/fingerprint-generator/src/fingerprint-generator.ts +114 -33
  29. {apify_fingerprint_datapoints-0.0.2 → apify_fingerprint_datapoints-0.0.3}/packages/fingerprint-injector/package.json +2 -2
  30. {apify_fingerprint_datapoints-0.0.2 → apify_fingerprint_datapoints-0.0.3}/packages/fingerprint-injector/src/fingerprint-injector.ts +96 -41
  31. {apify_fingerprint_datapoints-0.0.2 → apify_fingerprint_datapoints-0.0.3}/packages/fingerprint-injector/src/utils.js +257 -206
  32. {apify_fingerprint_datapoints-0.0.2 → apify_fingerprint_datapoints-0.0.3}/packages/generative-bayesian-network/README.md +46 -38
  33. {apify_fingerprint_datapoints-0.0.2 → apify_fingerprint_datapoints-0.0.3}/packages/generative-bayesian-network/package.json +1 -1
  34. {apify_fingerprint_datapoints-0.0.2 → apify_fingerprint_datapoints-0.0.3}/packages/generative-bayesian-network/src/bayesian-network.ts +51 -21
  35. {apify_fingerprint_datapoints-0.0.2 → apify_fingerprint_datapoints-0.0.3}/packages/generative-bayesian-network/src/bayesian-node.ts +76 -32
  36. {apify_fingerprint_datapoints-0.0.2 → apify_fingerprint_datapoints-0.0.3}/packages/generative-bayesian-network/src/utils.ts +22 -9
  37. {apify_fingerprint_datapoints-0.0.2 → apify_fingerprint_datapoints-0.0.3}/packages/generator-networks-creator/package.json +5 -3
  38. apify_fingerprint_datapoints-0.0.3/packages/generator-networks-creator/src/generator-networks-creator.ts +325 -0
  39. apify_fingerprint_datapoints-0.0.3/packages/generator-networks-creator/src/record-schema.ts +355 -0
  40. apify_fingerprint_datapoints-0.0.3/packages/header-generator/README.md +145 -0
  41. {apify_fingerprint_datapoints-0.0.2 → apify_fingerprint_datapoints-0.0.3}/packages/header-generator/package.json +2 -2
  42. {apify_fingerprint_datapoints-0.0.2 → apify_fingerprint_datapoints-0.0.3}/packages/header-generator/src/constants.ts +7 -1
  43. apify_fingerprint_datapoints-0.0.3/packages/header-generator/src/data_files/browser-helper-file.json +1 -0
  44. apify_fingerprint_datapoints-0.0.3/packages/header-generator/src/data_files/header-network-definition.zip +0 -0
  45. {apify_fingerprint_datapoints-0.0.2 → apify_fingerprint_datapoints-0.0.3}/packages/header-generator/src/data_files/headers-order.json +51 -4
  46. apify_fingerprint_datapoints-0.0.3/packages/header-generator/src/data_files/input-network-definition.zip +0 -0
  47. {apify_fingerprint_datapoints-0.0.2 → apify_fingerprint_datapoints-0.0.3}/packages/header-generator/src/header-generator.ts +240 -108
  48. {apify_fingerprint_datapoints-0.0.2 → apify_fingerprint_datapoints-0.0.3}/packages/header-generator/src/presets.ts +14 -13
  49. {apify_fingerprint_datapoints-0.0.2 → apify_fingerprint_datapoints-0.0.3}/packages/header-generator/src/utils.ts +12 -4
  50. apify_fingerprint_datapoints-0.0.3/packages/header-order-collector/collector.js +68 -0
  51. {apify_fingerprint_datapoints-0.0.2 → apify_fingerprint_datapoints-0.0.3}/packages/header-order-collector/package.json +1 -1
  52. {apify_fingerprint_datapoints-0.0.2 → apify_fingerprint_datapoints-0.0.3}/packages/header-order-collector/server.js +10 -10
  53. {apify_fingerprint_datapoints-0.0.2 → apify_fingerprint_datapoints-0.0.3}/packages/header-order-collector/serverv2.js +17 -17
  54. {apify_fingerprint_datapoints-0.0.2 → apify_fingerprint_datapoints-0.0.3}/pyproject.toml +1 -1
  55. {apify_fingerprint_datapoints-0.0.2 → apify_fingerprint_datapoints-0.0.3}/scripts/copy.ts +31 -14
  56. {apify_fingerprint_datapoints-0.0.2 → apify_fingerprint_datapoints-0.0.3}/scripts/typescript_fixes.mjs +4 -4
  57. apify_fingerprint_datapoints-0.0.3/test/antibot-services/antibot.js +69 -0
  58. {apify_fingerprint_datapoints-0.0.2 → apify_fingerprint_datapoints-0.0.3}/test/antibot-services/live-testing/README.md +3 -2
  59. {apify_fingerprint_datapoints-0.0.2 → apify_fingerprint_datapoints-0.0.3}/test/antibot-services/live-testing/cloudflare.ts +72 -29
  60. {apify_fingerprint_datapoints-0.0.2 → apify_fingerprint_datapoints-0.0.3}/test/antibot-services/live-testing/engine/combo.ts +0 -1
  61. {apify_fingerprint_datapoints-0.0.2 → apify_fingerprint_datapoints-0.0.3}/test/antibot-services/live-testing/engine/fingerprint-suite.ts +0 -1
  62. {apify_fingerprint_datapoints-0.0.2 → apify_fingerprint_datapoints-0.0.3}/test/antibot-services/live-testing/engine/playwright-extra.ts +2 -5
  63. {apify_fingerprint_datapoints-0.0.2 → apify_fingerprint_datapoints-0.0.3}/test/antibot-services/live-testing/engine/vanilla-playwright.ts +11 -2
  64. apify_fingerprint_datapoints-0.0.3/test/antibot-services/live-testing/report.html +89 -0
  65. apify_fingerprint_datapoints-0.0.3/test/antibot-services/live-testing/speed.js +63 -0
  66. {apify_fingerprint_datapoints-0.0.2 → apify_fingerprint_datapoints-0.0.3}/test/antibot-services/live-testing/utils/generateReport.ts +9 -3
  67. {apify_fingerprint_datapoints-0.0.2 → apify_fingerprint_datapoints-0.0.3}/test/fingerprint-generator/generation.test.ts +77 -45
  68. {apify_fingerprint_datapoints-0.0.2 → apify_fingerprint_datapoints-0.0.3}/test/fingerprint-injector/crossbrowser.test.ts +30 -9
  69. apify_fingerprint_datapoints-0.0.3/test/fingerprint-injector/fingerprint-injector.test.ts +622 -0
  70. apify_fingerprint_datapoints-0.0.3/test/fingerprint-injector/test.html +5 -0
  71. {apify_fingerprint_datapoints-0.0.2 → apify_fingerprint_datapoints-0.0.3}/test/generative-bayesian-network/generation.test.ts +36 -16
  72. apify_fingerprint_datapoints-0.0.3/test/generator-networks-creator/generator-networks-creator.test.ts +170 -0
  73. {apify_fingerprint_datapoints-0.0.2 → apify_fingerprint_datapoints-0.0.3}/test/header-generator/generation.test.ts +53 -27
  74. {apify_fingerprint_datapoints-0.0.2 → apify_fingerprint_datapoints-0.0.3}/test/header-generator/presets.test.ts +5 -1
  75. {apify_fingerprint_datapoints-0.0.2 → apify_fingerprint_datapoints-0.0.3}/tsconfig.eslint.json +2 -2
  76. {apify_fingerprint_datapoints-0.0.2 → apify_fingerprint_datapoints-0.0.3}/turbo.json +3 -3
  77. apify_fingerprint_datapoints-0.0.2/.github/workflows/check-pr-title.yml +0 -14
  78. apify_fingerprint_datapoints-0.0.2/.github/workflows/e2e-benchmark.yml +0 -49
  79. apify_fingerprint_datapoints-0.0.2/.github/workflows/model-updater.yml +0 -94
  80. apify_fingerprint_datapoints-0.0.2/.github/workflows/release-publish.yml +0 -62
  81. apify_fingerprint_datapoints-0.0.2/.github/workflows/release_python.yaml +0 -26
  82. apify_fingerprint_datapoints-0.0.2/LICENSE.md +0 -201
  83. apify_fingerprint_datapoints-0.0.2/PKG-INFO +0 -235
  84. apify_fingerprint_datapoints-0.0.2/packages/fingerprint-generator/src/data_files/fingerprint-network-definition.zip +0 -0
  85. apify_fingerprint_datapoints-0.0.2/packages/generator-networks-creator/src/generator-networks-creator.ts +0 -259
  86. apify_fingerprint_datapoints-0.0.2/packages/header-generator/README.md +0 -144
  87. apify_fingerprint_datapoints-0.0.2/packages/header-generator/src/data_files/browser-helper-file.json +0 -1
  88. apify_fingerprint_datapoints-0.0.2/packages/header-generator/src/data_files/header-network-definition.zip +0 -0
  89. apify_fingerprint_datapoints-0.0.2/packages/header-generator/src/data_files/input-network-definition.zip +0 -0
  90. apify_fingerprint_datapoints-0.0.2/packages/header-order-collector/collector.js +0 -65
  91. apify_fingerprint_datapoints-0.0.2/test/antibot-services/antibot.js +0 -57
  92. apify_fingerprint_datapoints-0.0.2/test/antibot-services/live-testing/report.html +0 -87
  93. apify_fingerprint_datapoints-0.0.2/test/antibot-services/live-testing/report.png +0 -0
  94. apify_fingerprint_datapoints-0.0.2/test/antibot-services/live-testing/speed.js +0 -43
  95. apify_fingerprint_datapoints-0.0.2/test/fingerprint-injector/fingerprint-injector.test.ts +0 -460
  96. apify_fingerprint_datapoints-0.0.2/test/fingerprint-injector/test.html +0 -7
  97. apify_fingerprint_datapoints-0.0.2/test/generator-networks-creator/generator-networks-creator.test.ts +0 -145
  98. {apify_fingerprint_datapoints-0.0.2 → apify_fingerprint_datapoints-0.0.3}/.editorconfig +0 -0
  99. {apify_fingerprint_datapoints-0.0.2 → apify_fingerprint_datapoints-0.0.3}/.gitignore +0 -0
  100. {apify_fingerprint_datapoints-0.0.2 → apify_fingerprint_datapoints-0.0.3}/apify_fingerprint_datapoints/__init__.py +0 -0
  101. {apify_fingerprint_datapoints-0.0.2 → apify_fingerprint_datapoints-0.0.3}/packages/fingerprint-generator/src/constants.ts +0 -0
  102. {apify_fingerprint_datapoints-0.0.2 → apify_fingerprint_datapoints-0.0.3}/packages/fingerprint-generator/src/index.ts +0 -0
  103. {apify_fingerprint_datapoints-0.0.2 → apify_fingerprint_datapoints-0.0.3}/packages/fingerprint-generator/tsconfig.build.json +0 -0
  104. {apify_fingerprint_datapoints-0.0.2 → apify_fingerprint_datapoints-0.0.3}/packages/fingerprint-generator/tsconfig.json +0 -0
  105. {apify_fingerprint_datapoints-0.0.2 → apify_fingerprint_datapoints-0.0.3}/packages/fingerprint-injector/src/constants.ts +0 -0
  106. {apify_fingerprint_datapoints-0.0.2 → apify_fingerprint_datapoints-0.0.3}/packages/fingerprint-injector/src/index.ts +0 -0
  107. {apify_fingerprint_datapoints-0.0.2 → apify_fingerprint_datapoints-0.0.3}/packages/fingerprint-injector/tsconfig.build.json +0 -0
  108. {apify_fingerprint_datapoints-0.0.2 → apify_fingerprint_datapoints-0.0.3}/packages/fingerprint-injector/tsconfig.json +0 -0
  109. {apify_fingerprint_datapoints-0.0.2 → apify_fingerprint_datapoints-0.0.3}/packages/generative-bayesian-network/src/index.ts +0 -0
  110. {apify_fingerprint_datapoints-0.0.2 → apify_fingerprint_datapoints-0.0.3}/packages/generative-bayesian-network/tsconfig.build.json +0 -0
  111. {apify_fingerprint_datapoints-0.0.2 → apify_fingerprint_datapoints-0.0.3}/packages/generator-networks-creator/src/index.ts +0 -0
  112. {apify_fingerprint_datapoints-0.0.2 → apify_fingerprint_datapoints-0.0.3}/packages/generator-networks-creator/src/network_structures/fingerprint-network-structure.zip +0 -0
  113. {apify_fingerprint_datapoints-0.0.2 → apify_fingerprint_datapoints-0.0.3}/packages/generator-networks-creator/src/network_structures/header-network-structure.zip +0 -0
  114. {apify_fingerprint_datapoints-0.0.2 → apify_fingerprint_datapoints-0.0.3}/packages/generator-networks-creator/src/network_structures/input-network-structure.zip +0 -0
  115. {apify_fingerprint_datapoints-0.0.2 → apify_fingerprint_datapoints-0.0.3}/packages/generator-networks-creator/tsconfig.build.json +0 -0
  116. {apify_fingerprint_datapoints-0.0.2 → apify_fingerprint_datapoints-0.0.3}/packages/generator-networks-creator/tsconfig.json +0 -0
  117. {apify_fingerprint_datapoints-0.0.2 → apify_fingerprint_datapoints-0.0.3}/packages/header-generator/src/index.ts +0 -0
  118. {apify_fingerprint_datapoints-0.0.2 → apify_fingerprint_datapoints-0.0.3}/packages/header-generator/tsconfig.build.json +0 -0
  119. {apify_fingerprint_datapoints-0.0.2 → apify_fingerprint_datapoints-0.0.3}/packages/header-generator/tsconfig.json +0 -0
  120. {apify_fingerprint_datapoints-0.0.2 → apify_fingerprint_datapoints-0.0.3}/packages/header-order-collector/Dockerfile +0 -0
  121. {apify_fingerprint_datapoints-0.0.2 → apify_fingerprint_datapoints-0.0.3}/packages/header-order-collector/cert/localhost-cert.pem +0 -0
  122. {apify_fingerprint_datapoints-0.0.2 → apify_fingerprint_datapoints-0.0.3}/packages/header-order-collector/cert/localhost-privkey.pem +0 -0
  123. {apify_fingerprint_datapoints-0.0.2 → apify_fingerprint_datapoints-0.0.3}/renovate.json +0 -0
  124. {apify_fingerprint_datapoints-0.0.2 → apify_fingerprint_datapoints-0.0.3}/scripts/netgen.sh +0 -0
  125. {apify_fingerprint_datapoints-0.0.2 → apify_fingerprint_datapoints-0.0.3}/scripts/netgen.ts +0 -0
  126. {apify_fingerprint_datapoints-0.0.2 → apify_fingerprint_datapoints-0.0.3}/scripts/publish.sh +0 -0
  127. {apify_fingerprint_datapoints-0.0.2 → apify_fingerprint_datapoints-0.0.3}/static/logo_big_dark.svg +0 -0
  128. {apify_fingerprint_datapoints-0.0.2 → apify_fingerprint_datapoints-0.0.3}/static/logo_big_light.svg +0 -0
  129. {apify_fingerprint_datapoints-0.0.2 → apify_fingerprint_datapoints-0.0.3}/test/antibot-services/live-testing/cloudflare-websites.csv +0 -0
  130. {apify_fingerprint_datapoints-0.0.2 → apify_fingerprint_datapoints-0.0.3}/test/generative-bayesian-network/testDataset.csv +0 -0
  131. {apify_fingerprint_datapoints-0.0.2 → apify_fingerprint_datapoints-0.0.3}/test/generative-bayesian-network/testNetworkDefinition.zip +0 -0
  132. {apify_fingerprint_datapoints-0.0.2 → apify_fingerprint_datapoints-0.0.3}/test/generative-bayesian-network/testNetworkStructureDefinition.zip +0 -0
  133. {apify_fingerprint_datapoints-0.0.2 → apify_fingerprint_datapoints-0.0.3}/test/header-generator/browser-list.test.ts +0 -0
  134. {apify_fingerprint_datapoints-0.0.2 → apify_fingerprint_datapoints-0.0.3}/test/tsconfig.json +0 -0
  135. {apify_fingerprint_datapoints-0.0.2 → apify_fingerprint_datapoints-0.0.3}/tsconfig.build.json +0 -0
  136. {apify_fingerprint_datapoints-0.0.2 → apify_fingerprint_datapoints-0.0.3}/tsconfig.json +0 -0
@@ -5,16 +5,12 @@
5
5
  "es2020": true,
6
6
  "node": true
7
7
  },
8
- "extends": [
9
- "@apify/eslint-config-ts"
10
- ],
8
+ "extends": ["@apify/eslint-config-ts"],
11
9
  "parserOptions": {
12
10
  "project": "./tsconfig.eslint.json",
13
11
  "ecmaVersion": 2020
14
12
  },
15
- "plugins": [
16
- "@typescript-eslint"
17
- ],
13
+ "plugins": ["@typescript-eslint"],
18
14
  "ignorePatterns": [
19
15
  "node_modules",
20
16
  "dist",
@@ -35,9 +31,12 @@
35
31
  "@typescript-eslint/no-explicit-any": "off",
36
32
  "@typescript-eslint/no-empty-function": "off",
37
33
  "import/no-extraneous-dependencies": "off",
38
- "@typescript-eslint/member-delimiter-style": ["error", {
39
- "multiline": { "delimiter": "semi", "requireLast": true },
40
- "singleline": { "delimiter": "semi", "requireLast": false }
41
- }]
34
+ "@typescript-eslint/member-delimiter-style": [
35
+ "error",
36
+ {
37
+ "multiline": { "delimiter": "semi", "requireLast": true },
38
+ "singleline": { "delimiter": "semi", "requireLast": false }
39
+ }
40
+ ]
42
41
  }
43
42
  }
@@ -4,7 +4,6 @@ about: Create a report to help us improve
4
4
  title: ''
5
5
  labels: bug
6
6
  assignees: ''
7
-
8
7
  ---
9
8
 
10
9
  **Describe the bug**
@@ -18,8 +17,9 @@ We should be able to copy your code, run it and get the same result.
18
17
  A clear and concise description of what you expected to happen.
19
18
 
20
19
  **System information:**
21
- - OS: [e.g. MacOS]
22
- - Node.js version [e.g. 14.7]
20
+
21
+ - OS: [e.g. MacOS]
22
+ - Node.js version [e.g. 14.7]
23
23
 
24
24
  **Additional context**
25
25
  Add any other context about the problem here.
@@ -4,7 +4,6 @@ about: For new things and improvements that are not bugs.
4
4
  title: ''
5
5
  labels: feature
6
6
  assignees: ''
7
-
8
7
  ---
9
8
 
10
9
  **Describe the feature**
@@ -1,11 +1,10 @@
1
- ---
2
- name: Question
3
- about: When you need help with something.
4
- title: ''
5
- labels: question
6
- assignees: ''
7
-
8
- ---
1
+ ---
2
+ name: Question
3
+ about: When you need help with something.
4
+ title: ''
5
+ labels: question
6
+ assignees: ''
7
+ ---
9
8
 
10
9
  Please submit new issues for new feature requests and bug reports only.
11
10
  For questions please join Apify Discord. You could get help from Apify team members and the community there.
@@ -0,0 +1,57 @@
1
+ name: Test Browserforge compatibility
2
+
3
+ on:
4
+ workflow_call:
5
+
6
+ jobs:
7
+ test:
8
+ runs-on: ubuntu-22.04
9
+ timeout-minutes: 5
10
+ steps:
11
+ - name: Install uv
12
+ uses: astral-sh/setup-uv@v6
13
+
14
+ - name: Set up Python
15
+ run: uv python install 3.13
16
+
17
+ - name: Install dependencies
18
+ run: |
19
+ uv venv create --python 3.13
20
+ uv venv activate
21
+ uv init
22
+ uv add "browserforge[all]==1.2.3"
23
+
24
+ - name: Download artifacts
25
+ uses: actions/download-artifact@v4
26
+ with:
27
+ name: new-models
28
+ path: ./new-models
29
+
30
+ - name: List workspace tree
31
+ run: |
32
+ echo "Workspace tree:"
33
+ find . -type d -path "./node_modules/*" -prune -name ".git" -prune -o -print | sort
34
+
35
+ - name: Copy models
36
+ run: |
37
+ cp ./new-models/packages/header-generator/src/data_files/header-network-definition.zip ./.venv/lib/python3.13/site-packages/browserforge/headers/data/header-network.zip
38
+ cp ./new-models/packages/header-generator/src/data_files/browser-helper-file.json ./.venv/lib/python3.13/site-packages/browserforge/headers/data/browser-helper-file.json
39
+ cp ./new-models/packages/header-generator/src/data_files/input-network-definition.zip ./.venv/lib/python3.13/site-packages/browserforge/headers/data/input-network.zip
40
+ cp ./new-models/packages/header-generator/src/data_files/headers-order.json ./.venv/lib/python3.13/site-packages/browserforge/headers/data/headers-order.json
41
+ cp ./new-models/packages/fingerprint-generator/src/data_files/fingerprint-network-definition.zip ./.venv/lib/python3.13/site-packages/browserforge/fingerprints/data/fingerprint-network.zip
42
+
43
+ - name: Run Browserforge compatibility test
44
+ run: |
45
+ cat << EOF > ./test.py
46
+ from browserforge.fingerprints import FingerprintGenerator
47
+ from browserforge.headers import HeaderGenerator
48
+
49
+ fg = FingerprintGenerator()
50
+ hg = HeaderGenerator()
51
+
52
+ for _ in range(10000):
53
+ fingerprint = fg.generate()
54
+ headers = hg.generate()
55
+ EOF
56
+
57
+ uv run ./test.py
@@ -0,0 +1,14 @@
1
+ name: Check PR title
2
+
3
+ on:
4
+ pull_request_target:
5
+ types: [opened, edited, synchronize]
6
+
7
+ jobs:
8
+ check_pr_title:
9
+ name: 'Check PR title'
10
+ runs-on: ubuntu-22.04
11
+ steps:
12
+ - uses: amannn/action-semantic-pull-request@v5.5.3
13
+ env:
14
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
@@ -0,0 +1,46 @@
1
+ name: Run Benchmarks
2
+
3
+ on:
4
+ # Triggers the workflow every Monday at 5am
5
+ workflow_dispatch:
6
+
7
+ jobs:
8
+ run_benchmark:
9
+ runs-on: ubuntu-22.04
10
+
11
+ steps:
12
+ - uses: actions/checkout@v4
13
+ with:
14
+ token: ${{ secrets.APIFY_SERVICE_ACCOUNT_GITHUB_TOKEN }}
15
+ - name: Use Node.js 22
16
+ uses: actions/setup-node@v4
17
+ with:
18
+ node-version: 22
19
+
20
+ - name: Cache Node Modules
21
+ uses: actions/cache@v4
22
+ with:
23
+ path: |
24
+ node_modules
25
+ key: cache-${{ github.run_id }}
26
+
27
+ - name: Install Dependencies
28
+ run: npm ci
29
+
30
+ - name: Install browsers
31
+ run: npx playwright install
32
+
33
+ - name: Build the project
34
+ run: npm run build
35
+
36
+ - name: Run benchmarks
37
+ run: npm run benchmark
38
+
39
+ - name: Update the benchmark report
40
+ uses: stefanzweifel/git-auto-commit-action@v6
41
+ with:
42
+ commit_message: 'chore: [skip-ci] update benchmark results'
43
+ branch: master
44
+ file_pattern: '**/report.png'
45
+ commit_user_name: 'Mark Bench[bot] 💪🏼'
46
+ commit_user_email: markbench[bot]@users.noreply.github.com
@@ -0,0 +1,171 @@
1
+ name: Model updater
2
+
3
+ on:
4
+ # Triggers the workflow every month
5
+ schedule:
6
+ - cron: '0 0 1 * *'
7
+ workflow_dispatch:
8
+
9
+ jobs:
10
+ build_model:
11
+ runs-on: ubuntu-22.04
12
+ outputs:
13
+ version: ${{ steps.get_version.outputs.version }}
14
+
15
+ steps:
16
+ - uses: actions/checkout@v4
17
+ with:
18
+ token: ${{ secrets.APIFY_SERVICE_ACCOUNT_GITHUB_TOKEN }}
19
+ - name: Use Node.js 22
20
+ uses: actions/setup-node@v4
21
+ with:
22
+ node-version: 22
23
+
24
+ - name: Cache node modules + browsers
25
+ uses: actions/cache@v4
26
+ with:
27
+ path: |
28
+ ~/.npm
29
+ ~/.cache/ms-playwright
30
+ key: ${{ runner.os }}-node-${{ hashFiles('package-lock.json') }}
31
+
32
+ - name: Install Dependencies
33
+ run: npm ci
34
+
35
+ - name: Install Playwright deps
36
+ run: npx playwright install
37
+
38
+ - name: Install xvfb
39
+ run: |
40
+ sudo apt-get update
41
+ sudo apt-get -y install xvfb
42
+
43
+ - name: Install Playwright browsers
44
+ run: |
45
+ npx playwright install webkit
46
+ npx playwright install chrome
47
+ npx playwright install msedge
48
+
49
+ - name: Install Playwright deps v2
50
+ run: npx playwright install-deps
51
+
52
+ - name: Collect HTTP header orders
53
+ run: |
54
+ xvfb-run -- node ./packages/header-order-collector/collector.js | tee ./packages/header-generator/src/data_files/headers-order.json
55
+
56
+ - name: Generate model
57
+ run: npm run buildNetwork
58
+ env:
59
+ APIFY_FINGERPRINT_DATASET_ID: ${{ secrets.APIFY_FINGERPRINT_DATASET_ID }}
60
+
61
+ - name: Upload models as artifacts
62
+ uses: actions/upload-artifact@v4
63
+ with:
64
+ name: new-models
65
+ path: |
66
+ ./packages/header-generator/src/data_files/headers-order.json
67
+ ./packages/header-generator/src/data_files/header-network-definition.zip
68
+ ./packages/header-generator/src/data_files/browser-helper-file.json
69
+ ./packages/header-generator/src/data_files/input-network-definition.zip
70
+ ./packages/fingerprint-generator/src/data_files/fingerprint-network-definition.zip
71
+ ./package.json
72
+ ./package-lock.json
73
+
74
+ test_model_js:
75
+ runs-on: ubuntu-22.04
76
+ needs: build_model
77
+ steps:
78
+ - uses: actions/checkout@v4
79
+ with:
80
+ token: ${{ secrets.APIFY_SERVICE_ACCOUNT_GITHUB_TOKEN }}
81
+
82
+ - name: Use Node.js 22
83
+ uses: actions/setup-node@v4
84
+ with:
85
+ node-version: 22
86
+
87
+ - name: Install Dependencies
88
+ run: npm ci
89
+
90
+ - name: Download artifacts
91
+ uses: actions/download-artifact@v4
92
+ with:
93
+ name: new-models
94
+
95
+ - name: List downloaded files
96
+ run: |
97
+ echo "Downloaded files:"
98
+ find . -type f -name "*.zip" -printf "%T+\t%s\t%p\n" | sort
99
+
100
+ - name: Test model changes (Node.JS packages)
101
+ run: |
102
+ npx playwright install --with-deps
103
+ npx puppeteer browsers install chrome
104
+ npx puppeteer browsers install firefox
105
+
106
+ npm run build
107
+ xvfb-run --auto-servernum -- npm test
108
+
109
+ test_model_py:
110
+ needs: build_model
111
+ uses: ./.github/workflows/browserforge-compat-test.yml
112
+
113
+ commit_model:
114
+ name: Commit and push new model
115
+ needs: [build_model, test_model_js, test_model_py]
116
+ runs-on: ubuntu-22.04
117
+ steps:
118
+ - uses: actions/checkout@v4
119
+ with:
120
+ token: ${{ secrets.APIFY_SERVICE_ACCOUNT_GITHUB_TOKEN }}
121
+
122
+ - name: Use Node.js 22
123
+ uses: actions/setup-node@v4
124
+ with:
125
+ node-version: 22
126
+
127
+ - name: Install Dependencies
128
+ run: npm ci
129
+
130
+ - uses: actions/download-artifact@v4
131
+ with:
132
+ name: new-models
133
+ run-id: 15709043154
134
+ github-token: ${{ secrets.APIFY_SERVICE_ACCOUNT_GITHUB_TOKEN }}
135
+
136
+ - name: Bump package version numbers
137
+ id: bump_version
138
+ run: |
139
+ npm version patch --git-tag-version=false
140
+ export GIT_TAG=$(node -p "require('./package.json').version")
141
+
142
+ npm run prerelease
143
+
144
+ echo "version=${GIT_TAG}" >> $GITHUB_OUTPUT
145
+
146
+ - name: Print new version
147
+ run: 'echo new version: ${{ steps.bump_version.outputs.version }}'
148
+
149
+ - name: Push new model
150
+ uses: stefanzweifel/git-auto-commit-action@v6
151
+ with:
152
+ commit_message: '[auto] fingerprint/header model update'
153
+ branch: master
154
+ tagging_message: 'v${{ steps.bump_version.outputs.version }}'
155
+
156
+ file_pattern: './packages/ ./package.json ./package-lock.json'
157
+
158
+ commit_user_name: 'modelmaker[bot] ⚒️'
159
+ commit_user_email: modelmaker[bot]@users.noreply.github.com
160
+
161
+ - name: Create release
162
+ uses: actions/create-release@v1
163
+ env:
164
+ GITHUB_TOKEN: ${{ secrets.APIFY_SERVICE_ACCOUNT_GITHUB_TOKEN }}
165
+ with:
166
+ tag_name: 'v${{ steps.bump_version.outputs.version }}'
167
+ release_name: 'v${{ steps.bump_version.outputs.version }}'
168
+ body: |
169
+ This is an automated release of the model used by the `fingerprint-suite`.
170
+
171
+ The only difference between this release and the previous one is the model used to generate fingerprints.
@@ -0,0 +1,63 @@
1
+ name: Publish
2
+ on:
3
+ release:
4
+ types: [published]
5
+
6
+ jobs:
7
+ test_and_sync:
8
+ uses: apify/fingerprint-suite/.github/workflows/test-and-sync.yml@master
9
+ secrets: inherit
10
+
11
+ publish_latest:
12
+ name: Publish latest
13
+ runs-on: ubuntu-22.04
14
+ needs: [test_and_sync]
15
+ steps:
16
+ - name: Checkout Source code
17
+ uses: actions/checkout@v4
18
+ with:
19
+ token: ${{ secrets.APIFY_SERVICE_ACCOUNT_GITHUB_TOKEN }}
20
+
21
+ - name: Use Node.js 22
22
+ uses: actions/setup-node@v4
23
+ with:
24
+ node-version: 22
25
+ cache: 'npm'
26
+ cache-dependency-path: 'package-lock.json'
27
+
28
+ - name: Turbo cache
29
+ id: turbo-cache
30
+ uses: actions/cache@v4
31
+ with:
32
+ path: .turbo
33
+ key: turbo-${{ github.job }}-${{ github.ref_name }}-${{ github.sha }}
34
+ restore-keys: |
35
+ turbo-${{ github.job }}-${{ github.ref_name }}-
36
+
37
+ - name: Install Dependencies
38
+ run: npm ci
39
+
40
+ - name: Release latest versions
41
+ run: |
42
+ git config --global user.name 'Apify Release Bot'
43
+ git config --global user.email 'noreply@apify.com'
44
+
45
+ echo "access=public" >> ~/.npmrc
46
+ echo "//registry.npmjs.org/:_authToken=${NPM_TOKEN}" >> ~/.npmrc
47
+
48
+ export GIT_TAG=$(echo $GITHUB_REF | sed 's/refs\/tags\///g')
49
+ npm run release
50
+ env:
51
+ NPM_TOKEN: ${{ secrets.APIFY_SERVICE_ACCOUNT_NPM_TOKEN }}
52
+ GIT_USER: 'noreply@apify.com:${{ secrets.APIFY_SERVICE_ACCOUNT_GITHUB_TOKEN }}'
53
+ GH_TOKEN: ${{ secrets.APIFY_SERVICE_ACCOUNT_GITHUB_TOKEN }}
54
+
55
+ - name: Commit the version bump
56
+ uses: stefanzweifel/git-auto-commit-action@v6
57
+ with:
58
+ branch: master
59
+ commit_message: 'chore: [skip ci] sync new package.json versions'
60
+ file_pattern: 'package*.json'
61
+ commit_user_name: Apify Bot
62
+ commit_user_email: my-github-actions-bot@example.org
63
+ commit_author: Apify Bot <apify@apify.com>
@@ -0,0 +1,26 @@
1
+ name: Create a release
2
+ on: workflow_dispatch
3
+
4
+ jobs:
5
+ publish_to_pypi:
6
+ name: Publish to PyPI
7
+ runs-on: ubuntu-latest
8
+ permissions:
9
+ contents: write
10
+ id-token: write # Required for OIDC authentication.
11
+ environment:
12
+ name: pypi
13
+ url: https://pypi.org/project/crawlee
14
+ steps:
15
+ - uses: actions/checkout@v4
16
+ - uses: actions/setup-python@v5
17
+ with:
18
+ python-version: '3.13'
19
+ - uses: astral-sh/setup-uv@v5
20
+ - name: Build project
21
+ shell: bash
22
+ run: uv build
23
+
24
+ # Publishes the package to PyPI using PyPA official GitHub action with OIDC authentication.
25
+ - name: Publish package to PyPI
26
+ uses: pypa/gh-action-pypi-publish@release/v1
@@ -3,26 +3,29 @@ name: Run tests
3
3
  on:
4
4
  # Push to master will deploy a dev version, push to stable deploys the latest version (and syncs the master branch)
5
5
  push:
6
- branches: [ master, stable ]
6
+ branches: [master, stable]
7
7
  # PRs will run tests (skip deployment)
8
8
  pull_request:
9
- branches: [ master, stable ]
9
+ branches: [master, stable]
10
10
  # A release via GitHub releases will deploy the latest version
11
11
  workflow_call:
12
12
  workflow_dispatch:
13
13
 
14
+ env:
15
+ APIFY_HTTPBIN_TOKEN: ${{ secrets.APIFY_HTTPBIN_TOKEN }}
16
+
14
17
  jobs:
15
18
  lint:
16
19
  name: Lint
17
20
  if: ${{ !contains(github.event.head_commit.message, '[skip ci]') }}
18
- runs-on: ubuntu-latest
21
+ runs-on: ubuntu-22.04
19
22
 
20
23
  steps:
21
24
  - uses: actions/checkout@v4
22
- - name: Use Node.js 22
25
+ - name: Use Node.js 22
23
26
  uses: actions/setup-node@v4
24
27
  with:
25
- node-version: 22
28
+ node-version: 22
26
29
 
27
30
  - name: Install Dependencies
28
31
  run: npm ci
@@ -30,9 +33,9 @@ jobs:
30
33
  - name: Load Cache
31
34
  uses: actions/cache@v4
32
35
  with:
33
- path: |
34
- node_modules
35
- key: cache-${{ github.run_id }}
36
+ path: |
37
+ node_modules
38
+ key: cache-${{ github.run_id }}
36
39
 
37
40
  - run: npm run lint
38
41
 
@@ -43,15 +46,15 @@ jobs:
43
46
 
44
47
  strategy:
45
48
  matrix:
46
- os: [ ubuntu-latest ]
47
- node-version: [ 18, 20, 22 ]
49
+ os: [ubuntu-22.04]
50
+ node-version: [18, 20, 22]
48
51
 
49
52
  steps:
50
53
  - uses: actions/checkout@v4
51
54
  - name: Use Node.js ${{ matrix.node-version }}
52
55
  uses: actions/setup-node@v4
53
56
  with:
54
- node-version: ${{ matrix.node-version }}
57
+ node-version: ${{ matrix.node-version }}
55
58
 
56
59
  - name: Cache Node Modules
57
60
  uses: actions/cache@v4
@@ -59,24 +62,24 @@ jobs:
59
62
  path: |
60
63
  node_modules
61
64
  key: cache-${{ github.run_id }}
62
-
65
+
63
66
  - name: Install Playwright deps
64
- run : npx playwright install --with-deps
65
-
67
+ run: npx playwright install --with-deps
68
+
66
69
  - name: Install Puppeteer deps
67
- run : |
68
- npx puppeteer browsers install chrome
69
- npx puppeteer browsers install firefox@beta
70
+ run: |
71
+ npx puppeteer browsers install chrome
72
+ npx puppeteer browsers install firefox
70
73
 
71
74
  - name: Turbo cache
72
75
  id: turbo-cache
73
76
  uses: actions/cache@v4
74
77
  with:
75
- path: .turbo
76
- key: turbo-${{ github.job }}-${{ github.ref_name }}-${{ github.sha }}
77
- restore-keys: |
78
- turbo-${{ github.job }}-${{ github.ref_name }}-
79
-
78
+ path: .turbo
79
+ key: turbo-${{ github.job }}-${{ github.ref_name }}-${{ github.sha }}
80
+ restore-keys: |
81
+ turbo-${{ github.job }}-${{ github.ref_name }}-
82
+
80
83
  - name: Build
81
84
  run: npm run build
82
85
 
@@ -86,4 +89,4 @@ jobs:
86
89
 
87
90
  - name: Run Linux tests
88
91
  run: xvfb-run --auto-servernum -- npm test
89
- if: ${{ matrix.os == 'ubuntu-latest'}}
92
+ if: ${{ matrix.os == 'ubuntu-22.04'}}
@@ -0,0 +1,25 @@
1
+ name: Update new issue
2
+
3
+ on:
4
+ issues:
5
+ types:
6
+ - opened
7
+
8
+ jobs:
9
+ label_issues:
10
+ name: Label issues
11
+ runs-on: ubuntu-latest
12
+ permissions:
13
+ issues: write
14
+
15
+ steps:
16
+ # Add the "t-tooling" label to all new issues
17
+ - uses: actions/github-script@v7
18
+ with:
19
+ script: |
20
+ github.rest.issues.addLabels({
21
+ issue_number: context.issue.number,
22
+ owner: context.repo.owner,
23
+ repo: context.repo.repo,
24
+ labels: ["t-tooling"]
25
+ })
@@ -0,0 +1,5 @@
1
+ # Ignore artifacts:
2
+ build
3
+ coverage
4
+
5
+ *.json
@@ -0,0 +1 @@
1
+ {}
@@ -32,21 +32,21 @@ orientation.
32
32
  Examples of behavior that contributes to creating a positive environment
33
33
  include:
34
34
 
35
- * Using welcoming and inclusive language
36
- * Being respectful of differing viewpoints and experiences
37
- * Gracefully accepting constructive criticism
38
- * Focusing on what is best for the community
39
- * Showing empathy towards other community members
35
+ - Using welcoming and inclusive language
36
+ - Being respectful of differing viewpoints and experiences
37
+ - Gracefully accepting constructive criticism
38
+ - Focusing on what is best for the community
39
+ - Showing empathy towards other community members
40
40
 
41
41
  Examples of unacceptable behavior by participants include:
42
42
 
43
- * The use of sexualized language or imagery and unwelcome sexual attention or
44
- advances
45
- * Trolling, insulting/derogatory comments, and personal or political attacks
46
- * Public or private harassment
47
- * Publishing others' private information, such as a physical or electronic
43
+ - The use of sexualized language or imagery and unwelcome sexual attention or
44
+ advances
45
+ - Trolling, insulting/derogatory comments, and personal or political attacks
46
+ - Public or private harassment
47
+ - Publishing others' private information, such as a physical or electronic
48
48
  address, without explicit permission
49
- * Other conduct which could reasonably be considered inappropriate in a
49
+ - Other conduct which could reasonably be considered inappropriate in a
50
50
  professional setting
51
51
 
52
52
  ### Our Responsibilities