PageSourceSearch

https://gold.bullionvault.jp/javascript/referrer.js

js bullionvault.jp collected 2026-10-02 04:59:52 UTC 2,866 bytes, 97 lines download raw bytes

1// Automatically sets referrer cookie setting basing on url hash, url query parameter or HTTP referrer header
2
3(function () {
4	function getSeoReferrer() {
5		if (!document.referrer) {
6			return null;
7		}
8
9		var patterns = [
10			{ 'name': 'Google', 'url': 'google' },
11			{ 'name': 'Bing', 'url': 'bing' },
12			{ 'name': 'Yahoo', 'url': 'yahoo' },
13			{ 'name': 'Yandex', 'url': 'yandex' },
14			{ 'name': 'Baidu', 'url': 'baidu' },
15			{ 'name': 'DuckDuckGo', 'url': 'duckduckgo' }
16		];
17
18		var maxReferrerLength = 550;
19
20		for (var i = 0; i < patterns.length; i++) {
21			var search = patterns[i];
22
23			if (document.referrer.search(search.url) !== -1) {
24				var host = search.name;
25
26				var res = document.referrer.match(/^(http[s]?\:?\/?\/?)?(www.)?([^:\/\s]+)/);
27				if (res) {
28					host = res[3];
29				}
30
31				var seoReferrer = 'SEO-' + search.name + '-' + host.replace('-', '%2D');
32				if (seoReferrer.length > maxReferrerLength) {
33					seoReferrer = seoReferrer.substring(0, maxReferrerLength - 3) + '...';
34				}
35
36				return seoReferrer;
37			}
38		}
39
40		return null;
41	}
42
43	// Attempt to avoid setting a referrer for Chrome prefetching pages
44	if (typeof document.visibilityState != 'undefined' && document.visibilityState === 'prerender') {
45		return;
46	}
47
48	// Get the existing referrer cookie value, if any.
49	var cookiedReferrer = getCookie("referrer");
50
51	if (!cookiedReferrer) {
52		var defaultReferrer = window.defaultReferrer || getSeoReferrer();
53
54		if (defaultReferrer !== "NONE") {
55			var paramsString = window.location.search, regex = /[?&]([^=#]+)=([^&#]*)/g, params = {}, m;
56			while (m = regex.exec(paramsString)) {
57				params[m[1]] = m[2];
58			}
59
60			var referrer = params['referrer'] || params['ref'] || params['r'];
61
62			if (!referrer) {
63				// Get the text after the hash in the URL, if any.
64				var fragment = window.location.hash && window.location.hash.substring(1);
65				// We used to use "hashbang" URLs to allow direct linking to pages, Don't set these old links as referrers
66				// e.g. /gold_market.do#!/orderboard
67				if (fragment && fragment.substring(0, 2) !== "!/") {
68					referrer = fragment;
69				}
70			}
71
72			referrer = referrer || defaultReferrer;
73			referrer = referrer && referrer.toUpperCase();
74
75			// Post to the referrer controller to set the cookie
76			// If there is a token and HMAC they will take precedence - the referrer is contained in the token.
77			// Otherwise if there is #REFERRER that will be set (if whitelisted)
78
79			var setCookieUrl = "/set_referrer.do?" + $.param({
80				token: params["token"],
81				hmac: params["hmac"],
82				referrer: referrer
83			});
84			$.ajax({
85				type: 'POST',
86				url: setCookieUrl,
87				error: function(jqXHR) {
88					if (jqXHR.status === 403 && location.pathname.indexOf("/help/blocked_referral.html") !== 0) {
89						// Blocked referral
90						location.href = "/help/blocked_referral.html";
91					}
92				}
93			})
94		}
95	}
96
97}());

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.