リファラとは、リンクをクリックして別ページに移動した際のリンク元のページのことです。
例えば、pixivのイラストはリファラ制御されていて、直接見ようとすると403が表示されます。
しかし、リファラは偽装可能です。
例えば、chromeでは、Referer Controlなどの拡張機能を使うことでリファラ偽装ができます。
chromeでできることはelectronでもほぼ可能なので、以下のコードを挟めば対処できます。
win.webContents.session.webRequest.onBeforeSendHeaders((detail, cb) => {
let {requestHeaders} = detail;
requestHeaders = Object.assign(requestHeaders, {Referer: 'http://www.pixiv.net'});
cb({requestHeaders});
}, {
urls: ['<all_urls>'],
types: ['xmlhttprequest']
});
が、いささかボイラーテンプレートなコードなので、ライブラリを使うことをオススメします。
akameco/electron-referer: Referer control for Electron app.
インストール
$ npm install --save electron-referer
使い方
const {app, BrowserWindow} = require('electron');
require('electron-referer')('http://www.pixiv.net/');
let win;
app.on('ready', () => {
win = new BrowserWindow();
});
制御したいurlを引数に入れればリファラの偽装は完了です。