+  HandyCache форум
|-+  Последние сообщения
Имя пользователя:
Пароль:

Страниц: 1 [2] 3 4 ... 10
 11 
 : 03 Сентябрь 2018, 08:40:38 
Автор AlexBrown - Последний ответ от AlexBrown
В IE отключите прокси
Там все отключено. Если включить обратно, то в мониторинге отображаются запросы с адреса 127.0.0.1, если выключить, то большинство приложений, перестают использовать прокси, а те которые продолжают, отображаются с адреса 192.168.1.102.
Как сюда скриншоты загрузить? Или вам видео нужно?

 12 
 : 03 Сентябрь 2018, 02:37:41 
Автор AlexBrown - Последний ответ от alex77
В IE отключите прокси

 13 
 : 02 Сентябрь 2018, 16:25:55 
Автор AlexBrown - Последний ответ от AlexBrown
Здравствуйте.
Пользовался некоторое время HandyCache для теста, будет ли ускорение от RAM кэша. Пользовался в режиме HTTPS прокси на локальном 1080 порту. Все работало и работает и сейчас, с этим проблем нет. Однако при отключении в панели управления в свойствах браузера некоторые приложения, продолжают отправлять запросы к HandyCache, при этом в Мониторе запросов они идут с сетевого адреса (192.168.1.102), а не с локального 127.0.0.1. В основном, этому подвержены лаунчеры игр, например World of Tanks, Warhammer:Vermintide.
Как от этого избавится? Видимо где-то в реестре остались настройки?
Не могу приложить скриншоты, форум ругается.

 14 
 : 18 Август 2018, 10:35:32 
Автор vJack - Последний ответ от hc.addict
@vJack: You can get ideas from my example below.

Код:
--[[ <HCExtension>
@name      whatismyip.host hide div
@author    hc.addict
@description hide div element in page
@rule      whatismyip\.host
@rule      whatismyip\.host\/my-ip-address-details
@event      BeforeAnswerBodySend
</HCExtension> ]]

function BeforeAnswerBodySend()
local jscript = '<script type="text/javascript">$(document).ready(function(){var x=document.getElementById("ipv6");x.style.display="none";var y=document.getElementById("learnmore");y.style.display="none"});</script>'
    hc.answer_body = re.replace(hc.answer_body, [[<\/body>]], jscript..'</body>')
end

 15 
 : 17 Август 2018, 19:45:44 
Автор kichrot - Последний ответ от hc.addict
External cache directories can be set in extension and cache clearing function don't access those external cache directories you set. CMIIW

 16 
 : 17 Август 2018, 19:35:38 
Автор Terfe - Последний ответ от hc.addict
@kichrot:

I prefer simple and direct.

Код:
function GetAnswerCode(s)
  _,_,x = string.find(s,'HTTP/1%.%d +(%d+)')
  if x==nil then return -1 else return tonumber(x) end
end

function Answer()
    local answ_code = GetAnswerCode(hc.answer_header)
    if answ_code == 200 then
hc.action = 'save'
hc.monitor_string = 'Save'
    end
end

 17 
 : 14 Август 2018, 10:55:04 
Автор Terfe - Последний ответ от kichrot
Тестирую предлагаемое мной расширение на основе адресов с сервера imgprx.livejournal.net, который хранит ссылки на картинки для блогов livejournal.com.
По итогам тестов внес очередные изменения в расширение, улучшающие его потребительские свойства и стабильность:

Код:
--[[ <HCExtension>
@name          Длина, дата последнего изменения и тип содержимого, как имя файла (LDTFN)
@author         bdstd, kichrot
@version        2.2.9
@rule           imgprx.livejournal.net/
@event          BeforeViewInMonitor
</HCExtension> ]]



function cacheable()
        if
        re.find(hc.url, [[\&begin=(?!0)[0-9]+]]) or
        re.find(hc.url, [[redirector]]) or
        re.find(hc.url, [[^htt[ps]+://\d+\.\d+\.\d+\.\d+.*]]) or
        re.find(hc.url, [[(\?|\&)(start|starttime)=\d+\.\d+]])
        then
                return false
        else
                if re.find(hc.answer_header, [[HTTP/1.1\s200]]) or re.find(hc.answer_header, [[^HTTP/1.1\s206.*?Content\-Range:\sbytes\s0-.*]]) then
                        return true
                else
                        return false
                end
        end
end



function GetContentType(s)
  _,_,x = string.find(s, '[cC]ontent%-[tT]ype: *([^;\r\n]+)')
  if x~=nil then x = string.lower(x) end
  return x
end

function GetContentLength(s)
  _,_,x = string.find(s, '[cC]ontent%-[lL]ength: *(%d+)')
  if x==nil then return -1 else return tonumber(x) end
end

function GetLastModified(d)
 local x = re.find(d, [[^[lL]ast-[mM]odified:\s]])
 if  x then
      x = re.find(d, [[^[lL]ast-[mM]odified:\s([^\r\n]+)]])
      x = re.replace(x, [[[lL]ast-[mM]odified:\s]], '', true) 
      return x
  else
       return -1
  end
end

function GetAnswerCode(s)
  _,_,x = string.find(s, 'HTTP/1%.%d +(%d+)')
  if x==nil then return -1 else return tonumber(x) end
end

function get_id()
        hc.monitor_string = 'LDTFN-getting_id'
        hc.white_mask="ЗНП"
        hc.action = 'dont_save'
        hc.client_disconnect()
        hc.hide_in_active_list = true
        hc.hide_in_monitor = true
        if cacheable()==true then
                local z = GetLastModified(hc.answer_header)        -- Забираем время последнего изменения файла из заголовка 'Last-Modified'
z = re.replace(z, [[([\s,:])]], '', true)             -- Убираем пробелы из значения 'Last-Modified'
local x1 = GetContentLength(hc.answer_header)    -- Забираем размер файла из заголовка 'Content-Length'
local x2 = x1 ..  '_' .. z
local y1 = GetContentType(hc.answer_header)       -- Забираем тип файла из заголовка 'Content-Type'
-- local y2 = re.replace(y1,  [[([/])]], '_', true)
local y2 = re.replace(y1, [[(.+?(?=/)+/)]], '', true)   
-- hc.put_msg(y2)
if x2 and y2 then
                       hc.set_global(hc.url, 'x-hc='..x2..'.'..y2)
       hc.white_mask="Н"
else
                        hc.set_global(hc.url, 'reset')
                end
        else
                hc.set_global(hc.url, 'reset')
        end
end

function conv()
        local x = hc.url
        local x = re.replace(x, [[dropboxusercontent]], 'dropbox')
        local x = re.replace(x, [[^.*?([a-zA-Z0-9\-]{4,20}\.[a-z]{2,3}\.[a-z]{2,3})(/|:\d+/).*x\-hc=(.*)$]], '!content-length-and-type-as-file-name/\\1/\\3')
        local x = re.replace(x, [[^.*?([a-zA-Z0-9\-]{4,20}\.[a-z]{2,3})(/|:\d+/).*x\-hc=(.*)$]], '!content-length-and-type-as-file-name/\\1/\\3')
        local x = re.replace(x, [[/]], '\\', true)
        hc.preform_cache_file_name(x)
        -- hc.put_msg(x)
end

function saver()
        if cacheable()==true then
                hc.action = 'save'
                hc.monitor_string = 'LDTFN-Saving'
        end
end

function hit_check()
        if hc.cache_file_name=='' then
                hc.call_me_for('AnswerHeaderReceived', 'saver')
        else
                hc.white_mask="З"
                hc.action = 'dont_update'
                hc.monitor_string = 'LDTFN-Cache'
        end
end


function BeforeViewInMonitor()

  -- выясняем код ответа из заголовка
  local answ_code = GetAnswerCode(hc.answer_header)

  -- если код ответа не равен 301, 302, 303, 307, 308
  if
     answ_code~=301 and
     answ_code~=302 and
     answ_code~=303 and
     answ_code~=307 and
     answ_code~=308
  then
         
        local x = hc.url
        if re.match(hc.request_header, [[^X\-Via:\sHandyCache\r\n]]) then
                hc.request_header = re.replace(hc.request_header, [[^X\-Via:\sHandyCache\r\n]], nil)
hc.call_me_for('AnswerHeaderReceived', 'get_id')
        else
                hc.white_mask = 'W'
                local xdomain = re.replace(x, [[^.*?//(.*?)/.*]], '\\1')
                local xget = hc.request_header
                -- local xget = re.replace(xget, [[GET]], 'HEAD') -- beberapa webserver menolak jika menggunakan request method head
                local xget = re.replace(xget, [[^Range:.*?\r\n]], nil)
                local xget = re.replace(xget, [[\r\n\r\n]], '\r\nX-Via: HandyCache\r\n\r\n')
                local xtunnel = 'CONNECT '..xdomain..':443 HTTP/1.1\r\nHost: '..xdomain..'\r\nUser-Agent: HandyCache\r\nConnection: keep-alive\r\n\r\n'
                if re.find(hc.url, [[^https://]]) then
                        hc.send_request(xget, '', xtunnel)
                else
                        hc.send_request(xget)
                end
                repeat
                        hc.sleep(50)
                        if hc.client_connected=='false' then hc.set_global(x, 'reset') end
                until hc.get_global(x)~=nil
                if hc.get_global(x)=='reset' then
                        hc.set_global(x, nil)
                else
          hc.white_mask="Н"
                        if re.find(x, [[\?]]) then
                                hc.request_header = re.replace(hc.request_header, [[(^GET.*?)(\sHTTP/1.1\r\n)]], '\\1&'..hc.get_global(x)..'\\2')
                                hc.call_me_for('URLToFileNameConverting', 'conv')
                                hc.call_me_for('BeforeRequestHeaderSend', 'hit_check')
                        else
                                hc.request_header = re.replace(hc.request_header, [[(^GET.*?)(\sHTTP/1.1\r\n)]], '\\1?'..hc.get_global(x)..'\\2')
                                hc.call_me_for('URLToFileNameConverting', 'conv')
                                hc.call_me_for('BeforeRequestHeaderSend', 'hit_check')
                        end
                end
                hc.set_global(x, nil)
        end
   end 
end

Как показывает моя практика, с данным расширением следует использовать расширение которое запрещает сохранять в кэше ответы сервера с кодами 301, 302, 303, 307 и 308:

Код:
--[[ <HCExtension>
@name          Не сохранять ответ 301, 302, 303, 307 и 308 (30(x) Dont_save )
@author        kichrot
@version       0.1
@description   Не сохранять файл в заголовке  которого ответ сервера "HTTP/1.1 30X ..."
@event         AnswerHeaderReceived/Answer
</HCExtension> ]]


function GetAnswerCode(s)
  _,_,x = string.find(s, 'HTTP/1%.%d +(%d+)')
  if x==nil then return -1 else return tonumber(x) end
end


function Answer()

 -- выясняем код ответа из заголовка
  answ_code = GetAnswerCode(hc.answer_header)

 -- если код ответа 301, 302, 303, 307 или 308
  if
     answ_code==301 or
     answ_code==302 or
     answ_code==303 or
     answ_code==307 or
     answ_code==308
  then
     hc.action = 'dont_save'
     hc.monitor_string = hc.monitor_string..'30(x) Dont_save '
  end

end  -- Конец функции Answer

 18 
 : 10 Август 2018, 16:57:27 
Автор vJack - Последний ответ от mai62
Есть возможность доступа к сырым данным, загружаемым по запросу браузера с помощью расширения на lua. Есть возможность изменять эти данные. На счет средств доступа к DOM на lua не знаю, может что-то есть.
Для HandyCache есть расширение Content Master, которое занимается обработкой HTML кода с целью вырезания рекламы http://handycache.ru/component/option,com_smf/Itemid,10/topic,7130.0/

 19 
 : 07 Август 2018, 16:45:43 
Автор vJack - Последний ответ от vJack
 Help me!
Здравствуйте
Есть-ли возможность доступа к DOM-у возвращаемой сервером страницы (до загрузки страницы в браузере) для  изменения HTML кода путём стандартного responseXML.getElementById ??
Спасибо

 20 
 : 06 Август 2018, 07:36:17 
Автор Terfe - Последний ответ от hc.addict
Есть сайт, у которого ссылки на файлы являются уникальными, никогда не повторяющимися. Ссылка в виде бессвязного набора символов (генерируется рандомно, видимо). Количество файлов весьма ограничено. Браузер и НС, естественно, закачивают каждый файл по ссылке при навигации по сайту.
Как можно закешировать файлы, чтоб они не скачивались каждый раз заново, хотя бы для конкретного сайта?

Сайт отдает файлы в gzip. Внутри архивов одинаковые имена файлов.
Если не НС, то может есть сторонние средства, которые позволят закешировать по размеру (хотя бы) или контенту?


Youtube stream url is an example of this.

Страниц: 1 [2] 3 4 ... 10