Skip to content

Commit 99a3902

Browse files
authored
0.11.3 Fixes (#192)
* recorder url filtering tweaks: - add isSelfRedirect(), skip recording exact self-redirects - when converting POST-to-GET, truncate long individual query args to 512, entire URL to 4096 to include remaining query args that may be shorter - deps: bump to replaywebpage 1.8.13, wabac.js 2.16.12, browsertrix-behaviors 0.5.2 - bump to 0.11.3
1 parent 64f8353 commit 99a3902

File tree

6 files changed

+62
-29
lines changed

6 files changed

+62
-29
lines changed

dist/embed/replay/sw.js

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/embed/ui.js

Lines changed: 4 additions & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,18 @@
11
{
22
"name": "@webrecorder/archivewebpage",
33
"productName": "ArchiveWeb.page",
4-
"version": "0.11.2",
4+
"version": "0.11.3",
55
"main": "index.js",
66
"description": "Create Web Archives directly in your browser",
77
"repository": "https://github.com/webrecorder/archiveweb.page",
88
"author": "Webrecorder Software",
99
"license": "AGPL-3.0-or-later",
1010
"dependencies": {
1111
"@fortawesome/fontawesome-free": "^5.13.0",
12-
"@webrecorder/awp-sw": "^0.4.2",
13-
"@webrecorder/wabac": "^2.16.9",
12+
"@webrecorder/awp-sw": "^0.4.3",
13+
"@webrecorder/wabac": "^2.16.12",
1414
"auto-js-ipfs": "^2.3.0",
15-
"browsertrix-behaviors": "^0.5.1",
15+
"browsertrix-behaviors": "^0.5.2",
1616
"btoa": "^1.2.1",
1717
"bulma": "^0.9.3",
1818
"client-zip": "^2.2.2",
@@ -22,7 +22,7 @@
2222
"multiformats": "^10.0.2",
2323
"node-fetch": "2.6.7",
2424
"pretty-bytes": "^5.6.0",
25-
"replaywebpage": "^1.8.8",
25+
"replaywebpage": "^1.8.13",
2626
"stream-browserify": "^3.0.0",
2727
"unused-filename": "^4.0.1",
2828
"uuid": "^8.3.2",

src/recorder.js

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1170,6 +1170,13 @@ class Recorder {
11701170
let data = null;
11711171

11721172
if (params.redirectResponse) {
1173+
1174+
if (reqresp.isSelfRedirect()) {
1175+
console.warn(`Skip self redirect: ${reqresp.url}`);
1176+
this.removeReqResp(params.requestId);
1177+
return;
1178+
}
1179+
11731180
reqresp.fillResponseRedirect(params);
11741181
data = reqresp.toDBRecord(null, this.pageInfo);
11751182
}

src/requestresponseinfo.js

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,9 @@ import { postToGetUrl } from "warcio";
77
// max URL length for post/put payload-converted URLs
88
const MAX_URL_LENGTH = 4096;
99

10+
// max length for single query arg for post/put converted URLs
11+
const MAX_ARG_LEN = 512;
12+
1013
const CONTENT_LENGTH = "content-length";
1114
const CONTENT_TYPE = "content-type";
1215
const EXCLUDE_HEADERS = ["content-encoding", "transfer-encoding"];
@@ -86,6 +89,18 @@ class RequestResponseInfo
8689
this._fillResponse(params.redirectResponse);
8790
}
8891

92+
isSelfRedirect() {
93+
if (this.status < 300 || this.status >= 400 || this.status === 304) {
94+
return false;
95+
}
96+
try {
97+
const redirUrl = new URL(this.responseHeaders["location"], this.url).href;
98+
return this.url === redirUrl;
99+
} catch (e) {
100+
return false;
101+
}
102+
}
103+
89104
fillResponseReceived(params) {
90105
const response = params.response;
91106

@@ -178,6 +193,17 @@ class RequestResponseInfo
178193
if (postToGetUrl(convData)) {
179194
//this.requestBody = convData.requestBody;
180195
// truncate to avoid extra long URLs
196+
try {
197+
const url = new URL(convData.url);
198+
for (const [key, value] of url.searchParams.entries()) {
199+
if (value && value.length > MAX_ARG_LEN) {
200+
url.searchParams.set(key, value.slice(0, MAX_ARG_LEN));
201+
}
202+
}
203+
convData.url = url.href;
204+
} catch (e) {
205+
//ignore
206+
}
181207
this.url = convData.url.slice(0, MAX_URL_LENGTH);
182208
}
183209
}

yarn.lock

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -954,14 +954,14 @@
954954
resolved "https://registry.yarnpkg.com/@webpack-cli/serve/-/serve-1.6.0.tgz#2c275aa05c895eccebbfc34cfb223c6e8bd591a2"
955955
integrity sha512-ZkVeqEmRpBV2GHvjjUZqEai2PpUbuq8Bqd//vEYsp63J8WyexI8ppCqVS3Zs0QADf6aWuPdU+0XsPI647PVlQA==
956956

957-
"@webrecorder/awp-sw@^0.4.2":
958-
version "0.4.2"
959-
resolved "https://registry.yarnpkg.com/@webrecorder/awp-sw/-/awp-sw-0.4.2.tgz#05eae20050c37e092090680559fe7f2f402a5adf"
960-
integrity sha512-yn2idnbj71rVTozFn4cPlse0MYF/20SNQYUJ9AZSzXQLCTxQGMDUxP6JY8XrZVt0hrTNMCJNAfXjd/Zo5pb6vQ==
957+
"@webrecorder/awp-sw@^0.4.3":
958+
version "0.4.3"
959+
resolved "https://registry.yarnpkg.com/@webrecorder/awp-sw/-/awp-sw-0.4.3.tgz#d18503c7877182280b685657a34655a0878951be"
960+
integrity sha512-erQWtLvrsEErfxsQb89DNwNVNxv/Y00TvpHzj06+pfNQqNMCg/lmTasMRhImDhUkg0WrAsLCOKK+c3NrEvmCiw==
961961
dependencies:
962962
"@ipld/car" "^5.1.1"
963963
"@ipld/unixfs" "^2.1.1"
964-
"@webrecorder/wabac" "^2.16.9"
964+
"@webrecorder/wabac" "^2.16.12"
965965
auto-js-ipfs "^2.3.0"
966966
client-zip "^2.3.0"
967967
hash-wasm "^4.9.0"
@@ -970,10 +970,10 @@
970970
uuid "^9.0.0"
971971
warcio "^2.2.0"
972972

973-
"@webrecorder/wabac@^2.16.9":
974-
version "2.16.9"
975-
resolved "https://registry.yarnpkg.com/@webrecorder/wabac/-/wabac-2.16.9.tgz#49eab747d1a631e5aa46ee81530e0f2ed6fc0be7"
976-
integrity sha512-uIL/Hyev44dFVJvGOmxQiqZ17UPEM/TRvIHBDuKZdTusKgWcffHJ0pjLR7e0vz04Y5ONnyOPSFRBM6VE7SBZBQ==
973+
"@webrecorder/wabac@^2.16.12":
974+
version "2.16.12"
975+
resolved "https://registry.yarnpkg.com/@webrecorder/wabac/-/wabac-2.16.12.tgz#cf9ce5490cffcc34f0c1c4a30245276a094d78b2"
976+
integrity sha512-lqu9L4Ig2TWzt3t7cKs2CH9epkSt0k09NLx58xzytcHiH2sSEMpk5/ZvBQhNEjjd9Hb2gh3G7Clf7qdXB6b8lA==
977977
dependencies:
978978
"@peculiar/asn1-ecc" "^2.3.4"
979979
"@peculiar/asn1-schema" "^2.3.3"
@@ -1450,10 +1450,10 @@ browserslist@^4.14.5:
14501450
node-releases "^2.0.1"
14511451
picocolors "^1.0.0"
14521452

1453-
browsertrix-behaviors@^0.5.1:
1454-
version "0.5.1"
1455-
resolved "https://registry.yarnpkg.com/browsertrix-behaviors/-/browsertrix-behaviors-0.5.1.tgz#c4756b349dcabd23e25f851cec804d92e94eb63b"
1456-
integrity sha512-cNSSpQyQT73Y5NcBn2PFDkZM2ptxHVVcqxstryvtzZNOW9gGqzJlLPo8tmCBY00JHrMyn5rm8qImbFglcG/DKg==
1453+
browsertrix-behaviors@^0.5.2:
1454+
version "0.5.2"
1455+
resolved "https://registry.yarnpkg.com/browsertrix-behaviors/-/browsertrix-behaviors-0.5.2.tgz#d2fe1d6ff08815ff0dd68a05fe1a3cdc4bbec8ca"
1456+
integrity sha512-8nhpnzY8OM1mxQ+mZ+m10dpGgMuhCnKUV5YUlitDpMyEfKlEybUmTz5sroVQH8e//NcJox7W6QYjaU2Y/ygxww==
14571457

14581458
btoa@^1.2.1:
14591459
version "1.2.1"
@@ -5039,13 +5039,13 @@ registry-url@^5.0.0:
50395039
dependencies:
50405040
rc "^1.2.8"
50415041

5042-
replaywebpage@^1.8.8:
5043-
version "1.8.8"
5044-
resolved "https://registry.yarnpkg.com/replaywebpage/-/replaywebpage-1.8.8.tgz#a1287ba9f11120cdb4c5e497c7b0b19271902d45"
5045-
integrity sha512-eoS1ZI5D/oBZILQbAMpYl5A8s2m47daVBgE1EjGswOATSGNLbQ3R/lfJNTvLd+Oentc3WqfQYGJUTNV37Eblqw==
5042+
replaywebpage@^1.8.13:
5043+
version "1.8.13"
5044+
resolved "https://registry.yarnpkg.com/replaywebpage/-/replaywebpage-1.8.13.tgz#a846ea96f5444d09765a6eaddbe130f7dde2d3c1"
5045+
integrity sha512-haXIIwStg0STsgBadZ+wXPebIZ6zF/7CcqoJi0Xjvww73mxAiB7Kt9fl4yl3xgNaGQaXPn4HeTc/H0/2Gunayg==
50465046
dependencies:
50475047
"@fortawesome/fontawesome-free" "^5.15.4"
5048-
"@webrecorder/wabac" "^2.16.9"
5048+
"@webrecorder/wabac" "^2.16.12"
50495049
bulma "^0.9.3"
50505050
electron-log "^4.4.1"
50515051
electron-updater "^5.3.0"

0 commit comments

Comments
 (0)