Continuando uma sessão 'wget' interrompida?

1

É possível continuar uma sessão wget interrompida - por exemplo. analisando o arquivo de log (criado com -o ou -a) ou depois de alguma forma ter wget armazenando informações adicionais no disco (como se fosse uma lista sobre links analisados e pendentes)?

Eu sei que a opção -N permite que wget escolha onde ela foi, contanto que o tamanho do suporte do servidor e a lista de datas, mas o site que eu estava baixando tivesse conteúdo gerado principalmente pelo PHP, então não acho -N vai funcionar.

Eu não espero continuar o que comecei, mas se for possível, gostaria de ativar qualquer coisa que ajude antes de tentar novamente, caso eu seja interrompido novamente.

+++

Eu também encontrei um problema adicional ... Eu recebi muitos "ERROR 400: Bad Request" ... Eu suponho que isso significa que eu também tenho um pouco ansioso, então o servidor me bloqueou e / ou o banco de dados ficou sobrecarregado por um tempo. De qualquer forma, seria possível recuperar isso também? Faça com que wget continue basicamente de onde parou (depois de analisar o log ou a lista de links ou qualquer outra coisa), mas também refaça as páginas onde teve problemas (por exemplo, depois que editei a lista).

    
por Baard Kopperud 28.08.2015 / 15:47

1 resposta

0

O wget pode ser usado de maneiras diferentes, mas eu suponho que você esteja usando para emular um navegador fazendo uma requisição http (s) baseada no conteúdo do PHP.

Não há como fazer com que o wget retome uma sessão que foi interrompida. O servidor da web com o qual o wget está interagindo é sem estado, portanto, não há nada lá para acompanhar exatamente o que estava acontecendo em uma sessão que foi interrompida. Tudo o que você pode fazer é fazer a solicitação novamente, o que obviamente não o ajudará, já que será uma nova sessão e nunca poderá ser a mesma de antes.

Quando sua sessão do wget foi interrompida, essa sessão deixou de existir. O conteúdo gerado dinamicamente dependia dessa sessão específica e foi gerado apenas para atender a essa sessão. Quando essa sessão terminou, o conteúdo dinâmico dessa sessão deixou de existir efetivamente. Não há como voltar atrás e retomar a sessão agora inexistente ou interagir com o conteúdo dinâmico agora inexistente que existia apenas para atender a essa sessão.

Lembre-se de que os servidores da web são sem estado. Você faz uma solicitação e, ali mesmo, recebe a única resposta que será enviada a essa solicitação específica. Coisas mais complexas, como sessões e conteúdo dinâmico, compartilham essas solicitações sem estado passando IDs de sessões temporárias e / ou tokens para seu navegador. Então, quando sua próxima solicitação chegar, o aplicativo ou o script PHP que faz o conteúdo dinâmico verificará esse ID / token da sessão e responderá ao seu navegador de maneira lógica.

Mesmo que você pudesse de alguma forma reproduzir o mesmo ID de sessão e token que seu navegador tinha antes (não perca tempo tentando) as chances são de 99,99999% de que o ID / token de sessão se tornou inválido no servidor em questão de segundos desde o seu último pedido, de qualquer forma.

Isso está muito além do escopo da sua pergunta, mas com base no código / script exato com o qual o seu navegador estava interagindo nesse servidor, pode ser possível passar ID / tokens de sessão falsos, mas geralmente não é possível recuperar uma sessão interrompida. No seu caso, isso não é possível, já que você teria que tentar capturar o ID / token da sessão antes de perder a sessão para tentar reproduzi-la.

    
por 28.08.2015 / 19:54