您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Fix Pixiv raw image 403
- // ==UserScript==
- // @name i.pximg.net 403 Forbidden Fix
- // @namespace https://blog.maple3142.net/
- // @version 0.3
- // @description Fix Pixiv raw image 403
- // @author maple3142
- // @match https://i.pximg.net/*
- // @match https://img-comic.pximg.net/*
- // @grant GM_xmlhttpRequest
- // @grant GM_setValue
- // @grant GM_getValue
- // @compatible firefox >=52
- // @compatible chrome >=55
- // @license MIT
- // ==/UserScript==
- ;(function() {
- 'use strict'
- const params = new URLSearchParams(location.search)
- const removeAllChild = el => {
- while (el.firstChild) el.removeChild(el.firstChild)
- }
- function download(url, name = true) {
- const a = document.createElement('a')
- a.href = url
- a.download = name
- document.body.appendChild(a)
- a.click()
- a.remove()
- }
- if (document.title === '403 Forbidden') {
- const fname = location.pathname.split('/').slice(-1)[0]
- removeAllChild(document.body)
- document.title = 'Loading image...'
- document.body.style.textAlign = 'center'
- const msg = document.createElement('h1')
- msg.textContent = 'Loading'
- msg.style.padding = '0px'
- msg.style.margin = '0px'
- document.body.appendChild(msg)
- const origlink = document.createElement('a')
- origlink.textContent = 'Original Link'
- origlink.href = `https://www.pixiv.net/member_illust.php?mode=medium&illust_id=${
- /(\d+)/.exec(fname)[1]
- }`
- origlink.target = '_blank'
- origlink.style.display = 'block'
- origlink.style.padding = '0px'
- origlink.style.margin = '0px'
- document.body.appendChild(origlink)
- GM_xmlhttpRequest({
- method: 'GET',
- url: location.href,
- headers: {
- Referer: `https://www.pixiv.net/`
- },
- responseType: 'blob',
- onload: xhr => {
- const blob = xhr.response
- const url = URL.createObjectURL(blob)
- const img = new Image()
- img.src = url
- msg.replaceWith(img)
- img.oncontextmenu = e => {
- e.preventDefault()
- if (confirm('Download Image?')) {
- download(url, fname)
- }
- }
- document.title = fname
- },
- onerror: e => {
- msg.textContent = 'Load failed.'
- }
- })
- }
- })()