Доступ ко всей истории просмотров через 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>