DarkRaver
Erfahrenes Mitglied
Hallo,
ich versuche mich gerade ein wenig mit cUrl auseinanderzusetzen und möchte daher eine automatische Auslesung von
https://www.zurichconnect.ch/gm/de/versicherungen/auto/berechnen.html
durchführen. Ab dem 3. Schritt gibt es einmal die Haftpflicht, die Teilkasko und die Vollkaskoversicherung, diese 3 Werte stehen dann oben. Ich gebe aktuell erst einmal ein Request um die Session u. den Cookie zu ermitteln:
Das curlData->getCurlConfig sieht folgendermaßen aus:
Nachdem ich nun die Session in dem Cookie abgespeichert habe, kann es mit dem ersten Schritt weitergehen:
Das funktioniert auch gut und alles bisherige funktioniert. Das getStep2Data sieht so aus:
Nun zum nächsten Schritt, hier kommt nämlich der Fehler.
getStep3Data:
Führe ich dies aus bekomme ich den Quelltext vom 2. Schritt zurück und unten steht "DIN-Kw nicht gesetzt". Gut, ich habe also den ausgehenden Traffic näher analysiert und herausbekommen, dass dies per Javascript gesetzt wird. Also machen wir das doch nach, hab ich mir gedacht:
(Das $curlData->getDinKwData() ist gleich aufgebaut wie getStep3Data, habe es nur für alle Fälle abstrahiert)
Jetzt kommt es, diesen Schritt habe ich vor dem Step2toStep3 gemacht, es muss ja vorher gesetzt werden. Nun bekomme ich diese Fehlermeldung vom Server zurück:
Das ist sehr merkwürdig in meinen Augen und ich suche schon seit letzter Woche Donnerstag vergeblich eine Lösung für dieses Problem.
Vielleicht weiß ja einer von euch eine Lösung, ich hänge hier auf jeden fall und weiß nicht mehr weiter.
Vielen Dank schon einmal.
Mfg
ich versuche mich gerade ein wenig mit cUrl auseinanderzusetzen und möchte daher eine automatische Auslesung von
https://www.zurichconnect.ch/gm/de/versicherungen/auto/berechnen.html
durchführen. Ab dem 3. Schritt gibt es einmal die Haftpflicht, die Teilkasko und die Vollkaskoversicherung, diese 3 Werte stehen dann oben. Ich gebe aktuell erst einmal ein Request um die Session u. den Cookie zu ermitteln:
PHP:
$curl_log = fopen('data/curl_requests_first.txt', 'w');
$ch = curl_init('https://www.zurichconnect.ch/gm/de/versicherungen/auto/berechnen.html');
curl_setopt_array($ch, $curlData->getCurlConfig($curl_log));
curl_setopt($ch, CURLOPT_POST, 0);
$result = curl_exec($ch);
PHP:
public function getCurlConfig($fileHandler) {
$curlHeader = 'Content-Type:application/x-www-form-urlencoded;charset=UTF-8';
$curlAgent = 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/535.2 (KHTML, like Gecko) Chrome/15.0.874.121 Safari/535.2';
$curlConfig = array(
CURLOPT_USERAGENT => $curlAgent,
CURLOPT_HEADER => $curlHeader,
CURLOPT_FOLLOWLOCATION => false,
CURLOPT_SSLVERSION => 3,
CURLOPT_SSL_VERIFYPEER => false,
CURLOPT_SSL_VERIFYHOST => 2,
CURLOPT_RETURNTRANSFER => 1,
CURLOPT_HEADER => 1,
CURLOPT_COOKIEJAR => self::$cookiePath,
CURLOPT_COOKIEFILE => self::$cookiePath,
CURLOPT_HTTPHEADER => array($curlHeader),
CURLOPT_VERBOSE => 1,
CURLOPT_STDERR => $fileHandler,
);
return $curlConfig;
}
PHP:
$curl_log = fopen('data/curl_request_step1-2.txt', 'w');
$ch = curl_init('https://www.zurichconnect.ch/zuritel/genevaOfferMF60.do?command=Step2&commandvalue=null&ts=' . microtime(true));
curl_setopt($ch, CURLOPT_REFERER, 'https://www.zurichconnect.ch/gm/de/versicherungen/auto/berechnen.html');
curl_setopt_array($ch, $curlData->getCurlConfig($curl_log));
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($curlData->getStep2Data()));
$result = curl_exec($ch);
Code:
public function getStep2Data() {
$curl_array = array(
'' => '',
'aazones' => 'container,validationErrors,',
'' => '',
'aaxmlrequest' => 'true',
'genevaHelper.attribute(PERSON_INSURANCEHOLDER_SEX).wert' => $this->config[DYN]['gender'],
'genevaHelper.attribute(PERSON_INSURANCEHOLDER_FIRSTNAME).wert' => $this->config[FIX]['firstName'],
'genevaHelper.attribute(PERSON_INSURANCEHOLDER_SIRNAME).wert' => $this->config[FIX]['lastName'],
'genevaHelper.attribute(PERSON_INSURANCEHOLDER_EMAIL).wert' => $this->config[FIX]['emailAdress'],
'genevaHelper.attribute(PERSON_INSURANCEHOLDER_EMAIL).wert' => $this->config[FIX]['emailAdress'],
'genevaHelper.attribute(PERSON_INSURANCEHOLDER_BIRTHDATE).wert' => date("d.m.Y", $this->config[DYN]['birthday']),
'nationalityVN' => 'andere',
'genevaHelper.attribute(PERSON_INSURANCEHOLDER_NATIONALITY).wert' => $this->config[DYN]['country'],
'genevaHelper.attribute(PERSON_INSURANCEHOLDER_PERMISSION_TYPE).wert' => $this->config[FIX]['countryLength'],
'genevaHelper.attribute(PERSON_INSURANCEHOLDER_PERMISSION_DATE).wert' => date("d.m.Y", $this->config[DYN]['birthday']),
'genevaHelper.vnIsDriver' => 'Y',
'genevaHelper.attribute(PERSON_INSURANCEHOLDER_LICENSE_B).wert' => date("d.m.Y", $this->config[DYN]['licDate']),
'genevaHelper.attribute(PERSON_DRIVER_FIRSTNAME).wert' => '',
'genevaHelper.attribute(PERSON_DRIVER_SIRNAME).wert' => '',
'genevaHelper.attribute(PERSON_DRIVER_BIRTHDATE).wert' => 'TT.MM.JJJJ',
'genevaHelper.attribute(PERSON_DRIVER_NATIONALITY).wert' => 'X',
'genevaHelper.attribute(PERSON_DRIVER_PERMISSION_TYPE).wert' => 'X',
'genevaHelper.attribute(PERSON_DRIVER_PERMISSION_DATE).wert' => 'TT.MM.JJJJ',
'genevaHelper.attribute(PERSON_DRIVER_LICENSE_B).wert' => 'TT.MM.JJJJ',
'fromPage' => 'Step1',
'' => '1001;;;;;Hcurr:CHF;;',
);
return $curl_array;
}
PHP:
$curl_log = fopen('data/curl_request_step2-3.txt', 'w');
$ch = curl_init('https://www.zurichconnect.ch/zuritel/genevaOfferMF60.do?command=Step3&commandvalue=null&ts=' . microtime(true));
curl_setopt($ch, CURLOPT_REFERER, 'https://www.zurichconnect.ch/gm/de/versicherungen/auto/berechnen.html');
curl_setopt_array($ch, $curlData->getCurlConfig($curl_log));
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($curlData->getStep3Data()));
$result = curl_exec($ch);
PHP:
public function getStep3Data() {
$curl_array = array(
'' => '',
'aazones' => 'container,sideChainDiv,validationErrors,',
'' => '',
'aaxmlrequest' => 'true',
'registrationDate' => $this->config[DYN]['trafficRegistrationDate'],
'id_1000a' => 'Typen-Nummer',
'markenbezeichnung' => 'Marke wählen...',
'typenbezeichnung' => 'Modell wählen...',
'typenscheinNummer' => $this->config[DYN]['typeSham'],
'genevaHelper.attribute(MF_RISK_PLATECANTON).wert' => $this->config[DYN]['kanton'],
'genevaHelper.attribute(MF_RISK_ACCESSORIES).wert' => $this->config[DYN]['variousPrice'],
'genevaHelper.attribute(MF_RISK_KM_PER_YEAR).wert' => $this->config[DYN]['kmPerYear'],
'genevaHelper.attribute(MF_RISK_GARAGE).wert' => $this->config[FIX]['garage'],
'genevaHelper.attribute(MF_RISK_USAGE).wert' => $this->config[FIX]['vehicleUse'],
'genevaHelper.attribute(MF_RISK_YOUNG_DRIVER).wert' => $this->config[DYN]['driverOlderThan25'],
'genevaHelper.attribute(MF_RISK_LEASING).wert' => $this->config[DYN]['leasing'],
'genevaHelper.attribute(ROOT_INSURANCE_BEGIN).wert' => $this->config[DYN]['begin'],
'genevaHelper.attribute(ROOT_PROMO_CODE).wert' => '',
'genevaHelper.attribute(MF_QUESTION5_SELECTED).wert' => '0' . $this->config[FIX]['question1'],
'genevaHelper.attribute(MF_QUESTION5_TO_WHO).wert' => '',
'genevaHelper.attribute(MF_QUESTION5_COUNT).wert' => '',
'genevaHelper.attribute(MF_QUESTION5_TOTAL).wert' => 0,
'genevaHelper.attribute(MF_QUESTION6_SELECTED).wert' => '0' . $this->config[FIX]['question2'],
'genevaHelper.attribute(MF_QUESTION6_CLAIM_TYPE).wert' => '',
'genevaHelper.attribute(MF_QUESTION6_COUNT).wert' => '',
'genevaHelper.attribute(MF_QUESTION7_SELECTED).wert' => '0' . $this->config[FIX]['question3'],
'genevaHelper.attribute(af___mf___01___7___3___0).wert' => '',
'genevaHelper.attribute(af___mf___01___7___2___0).wert' => '',
'fromPage' => 'Step2',
'dispatch' => 'suchenByNumber',
'' => '1002;;;;;Hcurr:CHF;;',
);
return $curl_array;
}
PHP:
$curl_log = fopen('data/curl_request_din_kw.txt', 'w');
$ch = curl_init('https://www.zurichconnect.ch/zuritel/eurotaxSearchSelection.do?fahrzeugListId=0');
curl_setopt($ch, CURLOPT_REFERER, 'https://www.zurichconnect.ch/gm/de/versicherungen/auto/berechnen.html');
curl_setopt_array($ch, $curlData->getCurlConfig($curl_log));
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($curlData->getDinKwData()));
$result = curl_exec($ch);
Jetzt kommt es, diesen Schritt habe ich vor dem Step2toStep3 gemacht, es muss ja vorher gesetzt werden. Nun bekomme ich diese Fehlermeldung vom Server zurück:
PHP:
<?xml version="1.0" encoding="UTF-8"?><exception type="javax.servlet.ServletException"><![CDATA[javax.servlet.ServletException: BeanUtils.populate
at org.apache.struts.util.RequestUtils.populate(RequestUtils.java:1254)
at org.apache.struts.action.RequestProcessor.processPopulate(RequestProcessor.java:821)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:254)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482)
at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:525)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at com.zurich.chz.omniart.servlet.filter.PrincipalFilter.doFilter(PrincipalFilter.java:183)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at org.ajaxanywhere.AAFilter.doFilter(AAFilter.java:65)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:81)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
at org.jboss.web.tomcat.security.CustomPrincipalValve.invoke(CustomPrincipalValve.java:39)
at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:153)
at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:59)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
at org.apache.catalina.valves.FastCommonAccessLogValve.invoke(FastCommonAccessLogValve.java:481)
at com.zurich.chz.omni.tomcat55.valves.ValveUserFormBase.invoke(ValveUserFormBase.java:103)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
at org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:307)
at org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:385)
at org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:748)
at org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:678)
at org.apache.jk.common.SocketConnection.runIt(ChannelSocket.java:871)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
at java.lang.Thread.run(Thread.java:534)
]]></exception>"
Vielleicht weiß ja einer von euch eine Lösung, ich hänge hier auf jeden fall und weiß nicht mehr weiter.
Vielen Dank schon einmal.
Mfg