I posted this as a reply to an existing thread a couple of years ago and while revisiting the topic I realized I didn’t format the code to make it easy to copy and paste so I am adding it again in its own thread. You need the TamperMonkey extension to run this. It will automatically add links to all discovered resolutions for any given video on *.pornhub.com or *.pornhubpremium.com. All you need to do is install the tampermonkey extension and paste this script to it. Once set up you shouldn’t need to mess with it.
With the script installed you should see links below the video title:
You right click the link and save as or click to open in a new tab (right click and save as from there). I had to whitelist it in my adblocker to get it to work.
// ==UserScript==
// @name Pornhub Downloader
// @namespace lancaster
// @version 0.5
// @description try to take over the world!
// @author theekaffe
// @match https://www.pornhub.com/view_video.php?*
// @match *://www.pornhub.com/view_video.php*
// @match *://*.pornhub.com/view_video.php*
// @match *://pornhub.com/view_video.php*
// @match https://www.pornhubpremium.com/view_video.php
// @match https://www.pornhubpremium.com/view_video.php*
// @match *://www.pornhubpremium.com/view_video.php*
// @match *://*.pornhubpremium.com/view_video.php*
// @match *://pornhubpremium.com/view_video.php*
// @grant test
// @grant GM.xmlHttpRequest
// ==/UserScript==
let [id, flashvars] = Object.entries(unsafeWindow).find(([key, value]) => /^flashvars_\d+$/.test(key)) || [null, null];
var medias = flashvars.mediaDefinitions
var videoName = flashvars.video_title
for (var key in medias) {
console.log(medias[key].videoUrl)
var reg = new RegExp("https:\/\/([a-zA-Z0-9]+)\.pornhub(premium)?.com\/video\/get_media\?.+")
if (reg.test(medias[key].videoUrl)) {
GM.xmlHttpRequest({
method: "GET",
url: medias[key].videoUrl,
responseType: "json",
onload: function(xhr) {
var mp4files = JSON.parse(xhr.responseText)
//Make button
var element = document.getElementsByClassName("ratingInfo")[0];
for (var key in mp4files) {
if (mp4files[key].format == "mp4") {
var link = document.createElement("a");
link.setAttribute('target', '_blank');
link.setAttribute('rel', 'noopener noreferrer');
link.setAttribute('href', mp4files[key].videoUrl);
link.setAttribute('style','padding-left:2x');
link.setAttribute('download', videoName);
link.textContent = mp4files[key].quality;
element.appendChild(link);
var space = document.createElement("a");
space.textContent = " "
element.appendChild(space);
}
}
}})}}