I' He encontrado que hasta que el phantomjs madure un poco, de acuerdo con el número 158 http://code.google.com/p/phantomjs/issues/detail?id=158, esto es un poco dolor de cabeza para ellos.
¿Así que quieres hacerlo de todos modos? He optado por ir un poco más alto para lograr esto y he agarrado PyMiProxy encima en https://github.com/allfro/pymiproxy, descargado, instalado, configurarlo, tomaron su código de ejemplo y de hecho esto en proxy.py
from miproxy.proxy import RequestInterceptorPlugin, ResponseInterceptorPlugin, AsyncMitmProxy
from mimetools import Message
from StringIO import StringIO
class DebugInterceptor(RequestInterceptorPlugin, ResponseInterceptorPlugin):
def do_request(self, data):
data = data.replace('Accept-Encoding: gzip\r\n', 'Accept-Encoding:\r\n', 1);
return data
def do_response(self, data):
#print '<< %s' % repr(data[:100])
request_line, headers_alone = data.split('\r\n', 1)
headers = Message(StringIO(headers_alone))
print "Content type: %s" %(headers['content-type'])
if headers['content-type'] == 'text/x-comma-separated-values':
f = open('data.csv', 'w')
f.write(data)
print ''
return data
if __name__ == '__main__':
proxy = AsyncMitmProxy()
proxy.register_interceptor(DebugInterceptor)
try:
proxy.serve_forever()
except KeyboardInterrupt:
proxy.server_close()
Entonces dispararla hasta
python proxy.py
Siguiente ejecuto PhantomJS con el proxy especificado ...
phantomjs --ignore-ssl-errors=yes --cookies-file=cookies.txt --proxy=127.0.0.1:8080 --web-security=no myfile.js
es posible que desee convertir su seguridad o tal, era innecesario que actualmente como yo' Estoy robando una sola fuente. Ahora debería ver un montón de texto que fluye a través de la consola de proxy y si aterriza en algo con el tipo mime de "text-x-comma-separated-values" lo guardará como data.csv. Esto también guardará todos los encabezados y todo, pero si has llegado hasta aquí, estoy seguro de que puedes descubrir cómo quitarlos.
Otro detalle, he descubierto que he tenido que deshabilitar la codificación gzip, podría usar zlib y descomprimir datos en gzip desde mi propio servidor web apache, pero si sale de IIS o tal, la descompresión obtendrá errores y no estoy seguro de esa parte de eso.
¿Entonces mi compañía eléctrica no me ofrecerá una API? ¡Multa! ¡Lo hacemos de la manera difícil!
Gracias NiKo, y creo que no estaba claro, pero estoy buscando todos los otros recursos, no la página html. Quiero almacenar el archivo css o js externo en una var, el contenido de estos recursos, ¿es esto posible? – iwek
simplemente asegúrate de configurar el protocolo correcto (es decir, http vs https) .. me tomó un tiempo descubrir que el sitio que estaba tratando de abrir estaba redireccionando de http a https .. y ese asfixiado casperjs (¿error?) – abbood
@ iwek Consulte este enlace para obtener más información sobre cómo guardar el recurso en el disco: http://stackoverflow.com/questions/24582307/how-to-save-the-current-webpage-with-casperjs-phantomjs según la respuesta de http: //stackoverflow.com/users/1816580/artjom-b – iChux