Capturando novas chamadas HTTP

3

Gostaria de capturar chamadas do sistema para abrir URLs (http). Eu não estou preocupado com o que o navegador está fazendo internamente. Em vez disso, quais URLs tentam ser abertas pelo explorador ou por outros programas (instaladores, particularmente).

Eu posso estabelecer um arquivo "graburl.bat":

@echo off
echo Param is: "%1"
pause

como manipulador HTTP padrão, definindo c:\graburl.bat" %1 (ou "c:\graburl.bat" "%1" ) no registro (vários locais / métodos funcionarão, mas atualmente, estou usando 'HKEY_CLASSES_ROOT \ http \ shell \ open \ command'). No entanto, não consigo capturar URLs completos que contenham e comercial (&).

Por exemplo, com minha configuração de teste acima, executando

start "https://www.google.com/search?client=opera&q=escape+ampersand"

abre uma janela com:

Param is: ""http://www.google.com/search?client=opera
'q' is not recognized as an internal or external command,
operable program or batch file.
Press any key to continue . . .

Não tenho como escapar (com ^) ou codificar o URL chamado, por isso não sei o que posso fazer. Existe alguma maneira de modificar o parâmetro na hora?

Obviamente, os navegadores funcionam com URLs complicadas porque suas chamadas de manipulação http são apenas "browser.exe" %1 . Eu também tentei usar "c:\windows\system32\cmd.exe" /k echo %1 , mas isso também falha.

Alguma sugestão? Eu preferiria uma maneira "nativa", mas um pequeno programa de terceiros, de preferência, seria OK também. Eventualmente, eu quero colocá-los em um log, e não apenas ecoá-los na tela, então um cmdline .exe que aceita um argumento de string e o envia para um arquivo seria ótimo.

Obrigado.

    
por Teknowledgist 06.12.2016 / 20:56

0 respostas