I want to check out how to do POST requests using bookmarklets in order to save URLs to the Wayback machine.
The reason is that every few months or so, saving a page the normal way through a something like https://web.archive.org/save/URL
Β fails for one reason or the other, but going to https://web.archive.org/save
, then entering URL, and pressing “SAVE PAGE
” button works fine:
The the failing way above is using a GET
request, the succeeding workaround will open https://web.archive.org/save/URLΒ
using the below POST
request (where I omitted some HTTP cookies and HTTP header fields for brevity).
- POST request using
PowerShell
:
$session = New-Object Microsoft.PowerShell.Commands.WebRequestSession
$session.UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36"
Invoke-WebRequest -UseBasicParsing -Uri "https://web.archive.org/save/URL" `
-Method "POST" `
-WebSession $session `
-Headers @{
"method"="POST"
"origin"="https://web.archive.org"
"referer"="https://web.archive.org/save"
} `
-ContentType "application/x-www-form-urlencoded" `
-Body "url=URL&capture_outlinks=on&capture_all=on&capture_screenshot=on"
- POST request using cURL on
bash
:
curl 'https://web.archive.org/save/URL' \
-H 'origin: https://web.archive.org' \
-H 'content-type: application/x-www-form-urlencoded' \
-H 'referer: https://web.archive.org/save' \
--data-raw 'url=URL&capture_outlinks=on&capture_all=on&capture_screenshot=on' \
--compressed
- POST request using the fetch API in JavaScript:
fetch("https://web.archive.org/save/URL", {
"headers": {
"content-type": "application/x-www-form-urlencoded",
},
"referrer": "https://web.archive.org/save",
"body": "url=URL&capture_outlinks=on&capture_all=on&capture_screenshot=on",
"method": "POST",
"mode": "cors"
});
BTW: Yes, I know that URL
is not a valid URL, so it will return a page with “http://url/ URL syntax is not valid.
“.
All links below viaΒ [Wayback/Archive] bookmarklet post request – Google Search:
I tried to put createFormSubmittingBookmarklets/createFormSubmitBookmarklets.js in a bookmarklet using both userjs.up.seesaa.net/js/bookmarklet.html and skalman.github.io/UglifyJS-online. That failed: somehow this code does not want to run as bookmarklet.
Running it from the console is fine though, and gave me this basic bookmarklet template:
javascript:function sf(ur,ty,fd){function me(tg,pr){var el=document.createElement(tg);for(const[nm,vl]of Object.entries(pr)){el.setAttribute(nm,vl);}return el}const fm=me("form",{action:ur,method:ty,style:"display:hidden;"});for(const[nm,vl]of Object.entries(fd)){fm.appendChild(me("input",{name:nm, value:vl}))}document.body.appendChild(fm);fm.submit()}sf("https://web.archive.org/save","post",{"url":"URL","capture_outlinks":"on","capture_all":"on","capture_screenshot":"on","wm-save-mywebarchive":"on","email_result":"on","":"SAVE PAGE"});
There bold URL
there is the URL to be saved. I need to test this, then rework it to become parameterised.
–jeroen
Like this:
Like Loading...