Доступ ко всей истории просмотров через Javascript
Если я нажму на вкладку истории в своем браузере, я могу добраться до папки со всеми связанными с ней ссылками, которые были организованы по дате.
Как я могу получить доступ к этому программному обеспечению с помощью Javascript? Я все еще новичок в Javascript, но мне нужно что-то вроде:
var aListOfDateLinkPairs = window.history.some_get_list_function;
Я уверен, что это большая проблема конфиденциальности для какой-либо произвольной сущности, но что, если я хочу реализовать это (программно) для себя в своем собственном браузере?
Спасибо!
Ответы
Ответ 1
В общем, история защищена браузером от доступа к нему через JavaScript, кроме как с помощью функции "назад" и "вперед". Есть некоторые хаки, которые могут просматривать некоторое количество истории, но это просто хаки.
Если вы хотите просматривать/изменять историю программно, вы можете сделать это с помощью плагинов для браузера. Например, плагины Chrome могут использовать этот API
РЕДАКТИРОВАТЬ
Mozilla также имеет некоторую информацию об изменении истории, доступную для Javascript здесь.
Похоже, что этот вопрос говорит о некоторых вещах, которые вам нужны.
Ответ 2
Javascript предлагает только базовые вызовы, когда ваша страница управляет браузером, например:
history.length
window.history.back()
history.forward()
window.history.go(-3)
Но если вы должны были написать свой собственный браузер, тогда вы будете использовать 3GL, и в этом случае вы полностью контролируете то, что пользователь набрал в полях поиска или адреса, которые вы указали, поэтому вам не следует любые проблемы, связанные с записью того, что сделал пользователь, если вы знаете, что делаете.
Ответ 3
Short Answer no, вы не можете получить доступ к истории своего браузера через общий Javascript.
Вы можете создать расширение, которое будет иметь перекрестный браузер с чем-то вроде: http://crossrider.com/
Документы для доступа к хранилищу Places
, которые позволяют вам получить доступ к истории браузера, приведены здесь для firefox: https://developer.mozilla.org/en-US/docs/Using_the_Places_history_service
И для хром он находится здесь: http://developer.chrome.com/extensions/history.html
Существует файл для Places
под названием Places.sqlite
- это база данных sqlite, если вы создадите локальное приложение, которое читает из этого файла, вместо того, чтобы обращаться к нему из вашего браузера, это было бы проще, на мой взгляд.
Вы также можете использовать https://addons.mozilla.org/en-us/firefox/addon/sqlite-manager/ sqlite manager и заказать историю в соответствии с датами непосредственно из базы данных. Здесь ERD для http://people.mozilla.org/~dietrich/places-erd.png
Ответ 4
Схема URI place:
предоставляет возможность использовать только javascript
"only" (mousing around required), приведенное ниже.
Сначала обратите внимание на различие между историей сеанса, к которой можно получить доступ через History
и window.history
, и общую историю браузера (в FF это называется частью библиотеки, а другая часть библиотеки - закладками), которая не имеет прямой javascript
интерфейс доступа.
ссылка:
проверено с помощью:
window.navigator.userAgent=
Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.4) Gecko/2008102920 Firefox/3.0.4
(Splashtop-v1.2.17.0)
(Тесное знакомство с этим предметом, к сожалению, связано с сильно искалеченным FF, выпущенным как QuickWeb по VM устройства в системе Splashtop.)
Вот что можно сделать:
Примечание:
-
среда тестирования FF, указанная выше, - некоторые из "конвенций",
используемый, возможно, эксклюзивный и не универсальный доступный в других браузерах
или версии FF
-
за счет немного более ручного трудоемкого вмешательства, чем 1 простой щелчок активации...
предлагаемое здесь решение также требует 2 ссылку закладки нажмите
3 сохранить его нажмите кнопку 4 ~ 6 открывать закладку и выбирать последовательность
7 результатов перетаскивания
8 ~ 10 очистка и удаление результатов из закладок
(не является ли это анафемой всему предписанию Ордена Automata или компьютерной автоматизации?
js js is js - Just Saying JavaScript просто [слишком] "Простой" )
Используя конструкцию javascript a place:
URI схемы с соответствующим .some_get_list_function
и закладок.
<a href="place:queryType=0&sort=8&maxResults=10" title="hysterix">extract history</a>
Щелчок по ссылке не удался, но щелкните правой кнопкой мыши по закладке и нажмите кнопку "Успешно". Ergo, также может разрешить левый клик, чтобы перенаправить сразу на закладку.
<a href="place:queryType=0&sort=8&maxResults=10" rel="sidebar" title="hystryx">extract history</a>
Перетащите теперь избранное place:
URI hystryx
в избранное <form><textarea>
. Обратите внимание, что значительное ограничение заключается в том, что этот процесс извлекает ТОЛЬКО идентификатор истории и ни одну хронологию истории, титры и т.д. Можно восстановить некоторую часть этой информации (например, заголовки, открыв каждый URI, чтобы извлечь их, делая это, конечно, изменения URI "самая последняя дата доступа" в истории), чтобы сделать URI "хорошими" ссылками.
Объединяя все это:
data:text/html;charset=utf-8,
<html><title >Heuristic History Hysterics scURIple</title>
<!--
http://stackoverflow.com/info/13369829/access-my-entire-browsing-history-via-javascript
/22773361# 22773361 -->
<!--
- scURIples (scriples) are generic schema (data:, javascript:, place:, ... ) URI that embed script
- data: scURIples (scriples) are amenable to direct cut & paste URI address bar evaluation
- generally no particular distinction is made between scURIples of different schema,
such as this data: schema URI, but ...
- javascript: schema specific scURIples are called scriplets or bookmarklets -->
<!--
a bookmark of this data: scURIple or its internal javascript: scriplet does the same thing -->
<!--
a place[s]: schema URI "works" from a bookmark only and not the address bar or a hyperlink -->
<!-- for internal use only (by the scURIbbler used to edit this script):
javascript: with ( opener . document . forms[0] . JS ) value =
value . replace( /\t|\n/g, function(c){ return escape(c) + c } ) ; close();//
scURIples are unscURIpulous
NB. no raw tabs, % 09 collapse to null, quote raw % w/ non-numerics, }; , ... -->
<script>
javascript:
String.prototype.HTMLtagWrap =
function ( tag, attrs) {
return tag[0]=="/" ?
"<" +tag+ ">" +this+ "<" +tag.substr(1)+ (attrs?" "+attrs:"") + ">" :
"<" +tag+ (attrs?" "+attrs:"") + ">" +this+ "</" +tag+ ">"
} ;
String.prototype.HTMLwrapTags =
function ( tagRA, atRA) {
return tagRA[0] ? this . HTMLtagWrap( tagRA.pop(), atRA.pop()) . HTMLwrapTags( tagRA, atRA)
: this
} ;
/* alert */ ( str =
( function(x){return x.HTMLtagWrap('title') + x.HTMLwrapTags(['/pre','center','b'] , [ ] ) }
('Heuristic History Hysterics')+
'1. '.HTMLtagWrap('b') +
'<input id=URIplcQry type=text size=120 ' +
'value="place:queryType=0&sort=8&maxResults=25" >\n' +
'suggestions:\t try just a raw place: with no corpus or places: (undocumented with an s)\n' +
'auto attribution:\t' +
'<input type=button onclick=URIplcQry.value+="&"+this.value value=sort=4 > \t' +
'<input type=button onclick=URIplcQry.value+="&"+this.value value=type=5 > \t' +
'<input type=button onclick=URIplcQry.value+="&"+this.value value=queryType=1 >\t ' +
'<input type=button onclick=URIplcQry.value+="&"+this.value value=domain="" >\t ' +
'<input type=button onclick=URIplcQry.value+="&"+this.value value=includeHidden=true >\t ' +
'<input type=button onclick=URIplcQry.value+="&"+this.value value=onlyBookmarked=true >\t' +
'\n\n2. '.HTMLtagWrap('b') +
'This link bookmarks the place: URI from step 1: ' +
'place: query URI href results' .
HTMLtagWrap( 'A',
' href="places:" rel="sidebar" title="hystryx " id="hystryx " ' +
' onmouseover ="with(this)title=id+(href=document.forms[0].URIplcQry.value)" '
) +
'\t(hint: to see the actual link, mouse over it 2x)' +
'\n\n3. '.HTMLtagWrap('b', ' style="vertical-align:top;" ' ) +
( '\n\t\t\tINSTRUCTIONS\n\n' +
'1. make the href place: query for the link in step 2. \n' +
'2. click the link to create a bookmark that accesses the URI library\n' +
'3. drag & drop the new bookmark (aka a container) here (replace this content)\n' +
'4. cleanup and delete the new bookmark if desired\n' +
'5. to be done: add a scURIbbler to massage this textarea\n' +
'\n\n' +
'tested with userAgent:\t\t\t\t' +
'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.4) Gecko/2008102920 Firefox/3.0.4' +
'(Splashtop-v1.2.17.0) \n' +
'\twindow.navigator.userAgent =\t\t' + window.navigator.userAgent +
'\n '
) .HTMLtagWrap('textarea', 'id=histURIs rows=12 cols=120 nowrap') +
'\n\n4. ...'.HTMLtagWrap('b') +
'\n\n5. '.HTMLtagWrap('b') +
'scURIbbler: <input type=text size=120 id=histURIpg ' +
' value="javascript:with(opener)with(document.forms[0]) ' +
' ( URIplcQry.value.HTMLtagWrap(\'b\') + ' +
' histURIs.value.replace(/^.*$/g,function(m){return m.link(m)}) ' +
' ).HTMLwrapTags( \'html pre\'.split(/ +/) , [ ] ) ' +
' "><input type=button value="open histURIs" onclick=window.open(histURIpg.value )> ' +
' '
) . HTMLwrapTags ( ["html", "form", "pre"] , [ ] )
);
/*
window.open ( "data:text/html;charset=utf-8," + str . replace ( /\n/g, '%'+'0A ' ) );
*/
document.write ( str );
</script>
</html>