proxy-generated XML merges requests when using SSL
Bill Smith <[email protected]> Tue, 27 Mar 2012 15:44:54 -0500
| Newsgroups | gmane.comp.java.grinder.devel |
|---|---|
| Message-ID | <CAKyDFRxMnNHJOkQ3sLpuMgpFmx-4RbvvTBm-vGsn6P1yw-LoDA@mail.gmail.com> |
According to FireBug, if I delete all my cookies in Firefox and then visit
https://www.google.com (i.e. with SSL), I generate 14 GETs. The XML
generated by TCPProxy in grinder 3.8 contains only 6 requests (see the XML
below).
When I go to http://www.google.com (i.e. without SSL), the resulting XML
has the right number of requests.
I invoked the TCP proxy as follows:
java -cp '/home/bsmith/software/grinder-3.8/lib/*' net.grinder.TCPProxy
-console -http /home/bsmith/software/grinder-3.8/etc/httpToXML.xsl
In case this makes a difference, when I used SSL, the proxy printed the
stack trace shown below. Despite the error, the proxy emitted XML
afterwards.
Here is the XML (I added the indentation for readability). Note how the
header values tend to repeat, e.g. in the first page element:
<?xml version="1.0" encoding="UTF-8"?>
<http-recording xmlns="http://grinder.sourceforge.net/tcpproxy/http/1.0">
<metadata>
<version>The Grinder 3.8</version>
<time>2012-03-27T15:26:48.105-05:00</time>
<test-number-offset>0</test-number-offset>
</metadata>
<common-headers ns0:headers-id="defaultHeaders">
<header ns1:name="Accept-Language" ns2:value="en-us,en;q=0.5"/>
<header ns3:name="Referer" ns4:value="https://www.google.com/"/>
<header ns5:name="Accept-Encoding" ns6:value="gzip, deflate"/>
<header ns7:name="User-Agent" ns8:value="Mozilla/5.0 (X11; Ubuntu;
Linux x86_64; rv:11.0) Gecko/20100101 Firefox/11.0"/>
<header ns9:name="Accept"
ns10:value="image/png,image/*;q=0.8,*/*;q=0.5"/>
</common-headers>
<base-uri ns11:uri-id="url0">
<scheme>https</scheme>
<host>www.google.com</host>
<port>443</port>
</base-uri>
<page>
<request>
<time>2012-03-27T15:26:53.735-05:00</time>
<method>GET</method>
<uri ns12:extends="url0">
<unparsed>/</unparsed>
<path>
<text>/</text>
</path>
</uri>
<headers>
<header ns13:name="User-Agent" ns14:value="Mozilla/5.0 (X11; Ubuntu; Linux
x86_64; rv:11.0) Gecko/20100101 Firefox/11.0"/>
<header ns15:name="Accept"
ns16:value="text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"/>
<header ns17:name="Accept-Language" ns18:value="en-us,en;q=0.5"/>
<header ns19:name="Accept-Encoding" ns20:value="gzip, deflate"/>
<header ns21:name="User-Agent" ns22:value="Mozilla/5.0 (X11; Ubuntu; Linux
x86_64; rv:11.0) Gecko/20100101 Firefox/11.0"/>
<header ns23:name="Accept" ns24:value="image/png,image/*;q=0.8,*/*;q=0.5"/>
<header ns25:name="Accept-Language" ns26:value="en-us,en;q=0.5"/>
<header ns27:name="Accept-Encoding" ns28:value="gzip, deflate"/>
<header ns29:name="Referer" ns30:value="https://www.google.com/"/>
<header ns31:name="User-Agent" ns32:value="Mozilla/5.0 (X11; Ubuntu; Linux
x86_64; rv:11.0) Gecko/20100101 Firefox/11.0"/>
<header ns33:name="Accept" ns34:value="*/*"/>
<header ns35:name="Accept-Language" ns36:value="en-us,en;q=0.5"/>
<header ns37:name="Accept-Encoding" ns38:value="gzip, deflate"/>
<header ns39:name="Referer" ns40:value="https://www.google.com/"/>
<header ns41:name="User-Agent" ns42:value="Mozilla/5.0 (X11; Ubuntu; Linux
x86_64; rv:11.0) Gecko/20100101 Firefox/11.0"/>
<header ns43:name="Accept" ns44:value="*/*"/>
<header ns45:name="Accept-Language" ns46:value="en-us,en;q=0.5"/>
<header ns47:name="Accept-Encoding" ns48:value="gzip, deflate"/>
<header ns49:name="Referer" ns50:value="https://www.google.com/"/>
<header ns51:name="User-Agent" ns52:value="Mozilla/5.0 (X11; Ubuntu; Linux
x86_64; rv:11.0) Gecko/20100101 Firefox/11.0"/>
<header ns53:name="Accept" ns54:value="image/png,image/*;q=0.8,*/*;q=0.5"/>
<header ns55:name="Accept-Language" ns56:value="en-us,en;q=0.5"/>
<header ns57:name="Accept-Encoding" ns58:value="gzip, deflate"/>
<header ns59:name="Referer" ns60:value="https://www.google.com/"/>
</headers>
<description>GET /</description>
<response ns61:status-code="200" ns62:reason-phrase="OK"/>
<response ns63:status-code="200" ns64:reason-phrase="OK"/>
<response ns65:status-code="200" ns66:reason-phrase="OK"/>
<response ns67:status-code="200" ns68:reason-phrase="OK"/>
<response ns69:status-code="200" ns70:reason-phrase="OK"/>
</request>
<request>
<time>2012-03-27T15:26:54.068-05:00</time>
<method>GET</method>
<uri ns71:extends="url0">
<unparsed>/images/close_sm.gif</unparsed>
<path>
<text>/images/close_sm.gif</text>
</path>
</uri>
<headers ns72:extends="defaultHeaders"/>
<description>GET close_sm.gif</description>
<sleep-time>22</sleep-time>
<response ns73:status-code="200" ns74:reason-phrase="OK"/>
</request>
<request>
<time>2012-03-27T15:26:54.082-05:00</time>
<method>GET</method>
<uri ns75:extends="url0">
<unparsed>/images/icons/product/chrome-48.png</unparsed>
<path>
<text>/images/icons/product/chrome-48.png</text>
</path>
</uri>
<headers ns76:extends="defaultHeaders"/>
<description>GET chrome-48.png</description>
<response ns77:status-code="200" ns78:reason-phrase="OK"/>
</request>
<request>
<time>2012-03-27T15:26:54.115-05:00</time>
<method>GET</method>
<uri ns79:extends="url0">
<unparsed>/logos/2012/Mies_Van_der_Rohe-2012-hp.jpg</unparsed>
<path>
<text>/logos/2012/Mies_Van_der_Rohe-2012-hp.jpg</text>
</path>
</uri>
<headers>
<header ns80:name="User-Agent" ns81:value="Mozilla/5.0 (X11; Ubuntu; Linux
x86_64; rv:11.0) Gecko/20100101 Firefox/11.0"/>
<header ns82:name="Accept" ns83:value="image/png,image/*;q=0.8,*/*;q=0.5"/>
<header ns84:name="Accept-Language" ns85:value="en-us,en;q=0.5"/>
<header ns86:name="Accept-Encoding" ns87:value="gzip, deflate"/>
<header ns88:name="Referer" ns89:value="https://www.google.com/"/>
<header ns90:name="User-Agent" ns91:value="Mozilla/5.0 (X11; Ubuntu; Linux
x86_64; rv:11.0) Gecko/20100101 Firefox/11.0"/>
<header ns92:name="Accept" ns93:value="image/png,image/*;q=0.8,*/*;q=0.5"/>
<header ns94:name="Accept-Language" ns95:value="en-us,en;q=0.5"/>
<header ns96:name="Accept-Encoding" ns97:value="gzip, deflate"/>
<header ns98:name="Referer" ns99:value="https://www.google.com/"/>
<header ns100:name="User-Agent" ns101:value="Mozilla/5.0 (X11; Ubuntu;
Linux x86_64; rv:11.0) Gecko/20100101 Firefox/11.0"/>
<header ns102:name="Accept"
ns103:value="image/png,image/*;q=0.8,*/*;q=0.5"/>
<header ns104:name="Accept-Language" ns105:value="en-us,en;q=0.5"/>
<header ns106:name="Accept-Encoding" ns107:value="gzip, deflate"/>
<header ns108:name="Referer" ns109:value="https://www.google.com/"/>
</headers>
<description>GET Mies_Van_der_Rohe-2012-hp.jpg</description>
<response ns110:status-code="200" ns111:reason-phrase="OK"/>
<response ns112:status-code="200" ns113:reason-phrase="OK"/>
<response ns114:status-code="204" ns115:reason-phrase="No Content"/>
</request>
<request>
<time>2012-03-27T15:26:54.132-05:00</time>
<method>GET</method>
<uri ns116:extends="url0">
<unparsed>/images/modules/buttons/g-button-chocobo-basic-1.gif</unparsed>
<path>
<text>/images/modules/buttons/g-button-chocobo-basic-1.gif</text>
</path>
</uri>
<headers>
<header ns117:name="User-Agent" ns118:value="Mozilla/5.0 (X11; Ubuntu;
Linux x86_64; rv:11.0) Gecko/20100101 Firefox/11.0"/>
<header ns119:name="Accept"
ns120:value="image/png,image/*;q=0.8,*/*;q=0.5"/>
<header ns121:name="Accept-Language" ns122:value="en-us,en;q=0.5"/>
<header ns123:name="Accept-Encoding" ns124:value="gzip, deflate"/>
<header ns125:name="Referer" ns126:value="https://www.google.com/"/>
<header ns127:name="User-Agent" ns128:value="Mozilla/5.0 (X11; Ubuntu;
Linux x86_64; rv:11.0) Gecko/20100101 Firefox/11.0"/>
<header ns129:name="Accept"
ns130:value="image/png,image/*;q=0.8,*/*;q=0.5"/>
<header ns131:name="Accept-Language" ns132:value="en-us,en;q=0.5"/>
<header ns133:name="Accept-Encoding" ns134:value="gzip, deflate"/>
<header ns135:name="Referer" ns136:value="https://www.google.com/"/>
<header ns137:name="User-Agent" ns138:value="Mozilla/5.0 (X11; Ubuntu;
Linux x86_64; rv:11.0) Gecko/20100101 Firefox/11.0"/>
<header ns139:name="Accept"
ns140:value="image/png,image/*;q=0.8,*/*;q=0.5"/>
<header ns141:name="Accept-Language" ns142:value="en-us,en;q=0.5"/>
<header ns143:name="Accept-Encoding" ns144:value="gzip, deflate"/>
</headers>
<description>GET g-button-chocobo-basic-1.gif</description>
<response ns145:status-code="200" ns146:reason-phrase="OK"/>
<response ns147:status-code="200" ns148:reason-phrase="OK"/>
<response ns149:status-code="200" ns150:reason-phrase="OK"/>
</request>
<request>
<time>2012-03-27T15:26:54.157-05:00</time>
<method>GET</method>
<uri ns151:extends="url0">
<unparsed>/images/modules/buttons/g-button-chocobo-basic-2.gif</unparsed>
<path>
<text>/images/modules/buttons/g-button-chocobo-basic-2.gif</text>
</path>
</uri>
<headers ns152:extends="defaultHeaders"/>
<description>GET g-button-chocobo-basic-2.gif</description>
<sleep-time>23</sleep-time>
<response ns153:status-code="200" ns154:reason-phrase="OK"/>
</request>
</page>
</http-recording>
Here is the stack trace generated when I used SSL:
15:26:54.795 [Filter thread for localhost:36679->ssl.gstatic.com:443]
ERROR: Received fatal alert: unknown_ca
javax.net.ssl.SSLHandshakeException: Received fatal alert: unknown_ca
at com.sun.net.ssl.internal.ssl.Alerts.getSSLException(Alerts.java:174)
~[na:1.6]
at com.sun.net.ssl.internal.ssl.Alerts.getSSLException(Alerts.java:136)
~[na:1.6]
at
com.sun.net.ssl.internal.ssl.SSLSocketImpl.recvAlert(SSLSocketImpl.java:1720)
~[na:1.6]
at
com.sun.net.ssl.internal.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:954)
~[na:1.6]
at
com.sun.net.ssl.internal.ssl.SSLSocketImpl.waitForClose(SSLSocketImpl.java:1493)
~[na:1.6]
at
com.sun.net.ssl.internal.ssl.HandshakeOutStream.flush(HandshakeOutStream.java:103)
~[na:1.6]
at
com.sun.net.ssl.internal.ssl.Handshaker.sendChangeCipherSpec(Handshaker.java:689)
~[na:1.6]
at
com.sun.net.ssl.internal.ssl.ServerHandshaker.sendChangeCipherAndFinish(ServerHandshaker.java:1276)
~[na:1.6]
at
com.sun.net.ssl.internal.ssl.ServerHandshaker.clientFinished(ServerHandshaker.java:1236)
~[na:1.6]
at
com.sun.net.ssl.internal.ssl.ServerHandshaker.processMessage(ServerHandshaker.java:224)
~[na:1.6]
at com.sun.net.ssl.internal.ssl.Handshaker.processLoop(Handshaker.java:593)
~[na:1.6]
at
com.sun.net.ssl.internal.ssl.Handshaker.process_record(Handshaker.java:529)
~[na:1.6]
at
com.sun.net.ssl.internal.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:893)
~[na:1.6]
at
com.sun.net.ssl.internal.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1138)
~[na:1.6]
at
com.sun.net.ssl.internal.ssl.SSLSocketImpl.readDataRecord(SSLSocketImpl.java:753)
~[na:1.6]
at com.sun.net.ssl.internal.ssl.AppInputStream.read(AppInputStream.java:75)
~[na:1.6]
at
net.grinder.tools.tcpproxy.AbstractTCPProxyEngine$FilteredStreamThread.interruptibleRun(AbstractTCPProxyEngine.java:431)
~[grinder-http-3.8.jar:na]
at
net.grinder.util.thread.InterruptibleRunnableAdapter.run(InterruptibleRunnableAdapter.java:58)
[grinder-core-3.8.jar:na]
at java.lang.Thread.run(Thread.java:662) [na:1.6.0_26]
------------------------------------------------------------------------------
This SF email is sponsosred by:
Try Windows Azure free for 90 days Click Here
http://p.sf.net/sfu/sfd2d-msazure
_______________________________________________
Grinder-development mailing list
Grinder-development-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org
https://lists.sourceforge.net/lists/listinfo/grinder-development