ExH login

Login to exhentai without modifying cookie by your self.

Mint 2018.08.31.. Lásd a legutóbbi verzió

You will need to install an extension such as Tampermonkey, Greasemonkey or Violentmonkey to install this script.

You will need to install an extension such as Tampermonkey or Violentmonkey to install this script.

You will need to install an extension such as Tampermonkey or Violentmonkey to install this script.

You will need to install an extension such as Tampermonkey or Userscripts to install this script.

You will need to install an extension such as Tampermonkey to install this script.

You will need to install a user script manager extension to install this script.

(I already have a user script manager, let me install it!)

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

You will need to install a user style manager extension to install this style.

You will need to install a user style manager extension to install this style.

You will need to install a user style manager extension to install this style.

(I already have a user style manager, let me install it!)

// ==UserScript==
// @name         ExH login
// @namespace    https://blog.maple3142.net/
// @version      0.1
// @description  Login to exhentai without modifying cookie by your self.
// @author       maple3142
// @connect      e-hentai.org
// @require      https://code.jquery.com/jquery-3.2.1.slim.min.js
// @match        https://exhentai.org/
// @grant        GM_xmlhttpRequest
// ==/UserScript==

;(function($) {
	'use strict'

	const $ct = $('<div>')
		.css('position', 'absolute')
		.css('height', '100%')
		.css('width', '100%')
		.css('background-color', 'white')
	const $lgb = $('<div>')
		.css('position', 'absolute')
		.css('left', '50%')
		.css('top', '50%')
		.css('transform', 'translateX(-50%) translateY(-50%)')
		.css('display', 'flex')
		.css('align-items', 'center')
		.css('width', '30%')
	const $ac = $('<input>')
	const $acl = $('<label>')
		.text('ac: ')
		.css('flex', 1)
		.append($ac)
	const $pw = $('<input>')
	const $pwl = $('<label>')
		.text('pw: ')
		.css('flex', 1)
		.append($pw)
		.attr('type', 'password')
	const $lg = $('<button>').text('Login')
	$lgb.append($acl)
		.append($pwl)
		.append($lg)
	$ct.append($lgb)

	$lg.on('click', e => doLogin($ac.val(), $pw.val()))

	function parseHeaders(h) {
		return Object.assign(
			...h
				.split('\n')
				.map(x => x.split(/:\s+/))
				.map(([k, v]) => ({ [k]: v }))
		)
	}
	function doLogin(UserName, PassWord) {
		GM_xmlhttpRequest({
			url: 'https://forums.e-hentai.org/index.php?act=Login&CODE=01',
			method: 'POST',
			headers: {
				'Content-Type': 'application/x-www-form-urlencoded'
			},
			data: `UserName=${UserName}&PassWord=${PassWord}&ipb_login_submit=Login!&b=d&bt=1-1&CookieDate=1`,
			onload: xhr => {
				const res = xhr.responseText
				const h = parseHeaders(xhr.responseHeaders)
				if (res && res.includes('You are now logged in as')) {
					document.cookie = 'yay=louder; Max-Age=0; path=/; domain=.exhentai.org'
					for (const tok of h['set-cookie'].split(',')) {
						document.cookie = tok.replace(/e-hentai/, 'exhentai')
					}
					location.href = location.href
				}
			},
			onerror: console.error
		})
	}

	if ($('img[src="https://exhentai.org/"]').length) {
		$(document.body).append($ct)
		//if(ac&&pw)doLogin(ac,pw)
	}
	document.cookie = document.cookie.replace('yay=louder', '')
})(jQuery.noConflict())