Я пытаюсь войти на сайт используя мой имя пользователя а также пароль.
Я пытался с помощью cUrl из командной строки, и мне удалось это сделать в два этапа: сначала я отправляю запрос на получение страницы для сохранения файлов cookie, затем я использую эти файлы cookie для отправки запроса на публикацию на другую страницу, которая является страницей входа.
Я делаю это таким образом, потому что я пытаюсь воспроизвести запросы, зарегистрированные в консоли разработчика моего браузера.
Это две команды, которые работают
curl -c cookie.txt --location "ss16589.scuolanext.info" --cacert ca-bundle.crtcurl --location "https://www.portaleargo.it/argoweb/famiglia/common/j_security_check" --data "utente=xxxxxxx&j_password=xxxxxxx&j_username=xxxxxxx"%"23SS16589&submit=Entra" -b cookie.txt --cacert ca-bundle.crt
Мне нужно разработать страницу php, которая может выполнить ту же задачу.
Эта первая страница работает. Я получаю мой cookie.txt полный вкусных печенья.
<?php
$url = 'ss16589.scuolanext.info';
$cookie = __DIR__ . '/cookie.txt'; // file and folder must be writeable
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_MAXREDIRS, 1000);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 0);
curl_setopt($ch, CURLOPT_CAINFO, getcwd().'\cacert.pem');
curl_setopt($ch, CURLOPT_COOKIESESSION, 1); //forza l'uso di cookie nuovi
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie); //per salvare i cookie
$result = curl_exec($ch);
$errors=curl_error($ch);
curl_close($ch);echo '<br>Result:<br>';
echo $result;
echo'<br>------------------<br>Errors:<br>';
echo $errors;
echo'<br>------------------<br>Cookies:<br>';
echo file_get_contents($cookie);
?>
Эта страница не работает.
<?php
$url = 'https://www.portaleargo.it/argoweb/famiglia/common/j_security_check';
$cookie = __DIR__ . '/cookie.txt'; // file and folder must be writeable
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, 'utente=xxxxxxx&j_password=xxxxxxx&j_username=xxxxxxx#SS16589&submit=Entra');
/*
//tried in another way, same result
$data = array(
'utente' => 'xxxxxxx',
'j_password' => 'xxxxxxx',
'j_username' => 'xxxxxxx#SS16589',
'submit' => 'Entra'
);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));
*/
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_MAXREDIRS, 1000);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 0);
curl_setopt($ch, CURLOPT_CAINFO, getcwd().'\cacert.pem');
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie); //per usare i cookie$result = curl_exec($ch);
$errors=curl_error($ch);
curl_close($ch);echo '<br>Result:<br>';
echo $result;
echo'<br>------------------<br>Errors:<br>';
echo $errors;
echo'<br>------------------<br>Cookies:<br>';
echo file_get_contents($cookie);
?>
Сначала я отправил # char, как в запросе на приглашение («%» 23), но сайт его не распознал, поэтому я изменился, и похоже, что он работает.
РЕДАКТИРОВАТЬ: символ «#» в порядке, «в»% «23 были неправильными. Помещение только% 23 работает (но все равно с той же ошибкой).
Но теперь я есть эта ошибка из результата вторая страница php:
HTTP Status 500 -
type Exception report
message
description The server encountered an internal error () that prevented it from fulfilling this request.
exception
javax.servlet.ServletException: java.lang.NullPointerException
javax.faces.webapp.FacesServlet.service(FacesServlet.java:154)
com.backbase.bjsf.webapp.filter.UploadFilter.doFilter(Unknown Source)
com.backbase.bjsf.webapp.filter.BackbaseApplicationFilter.doFilter(Unknown Source)
it.argosoft.alunniweb.modulofamiglia.filter.ModuloFamigliaUserFilter.doFilter(ModuloFamigliaUserFilter.java:97)
root cause
javax.faces.FacesException: java.lang.NullPointerException
org.apache.myfaces.context.servlet.ServletExternalContextImpl.dispatch(ServletExternalContextImpl.java:425)
org.apache.myfaces.application.jsp.JspViewHandlerImpl.renderView(JspViewHandlerImpl.java:211)
com.backbase.bjsf.application.BackbaseViewHandler.renderView(Unknown Source)
org.apache.myfaces.lifecycle.RenderResponseExecutor.execute(RenderResponseExecutor.java:41)
org.apache.myfaces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:132)
javax.faces.webapp.FacesServlet.service(FacesServlet.java:140)
com.backbase.bjsf.webapp.filter.UploadFilter.doFilter(Unknown Source)
com.backbase.bjsf.webapp.filter.BackbaseApplicationFilter.doFilter(Unknown Source)
it.argosoft.alunniweb.modulofamiglia.filter.ModuloFamigliaUserFilter.doFilter(ModuloFamigliaUserFilter.java:97)
root cause
org.apache.jasper.JasperException: java.lang.NullPointerException
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:413)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:326)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:253)
javax.servlet.http.HttpServlet.service(HttpServlet.java:847)
org.apache.myfaces.context.servlet.ServletExternalContextImpl.dispatch(ServletExternalContextImpl.java:419)
org.apache.myfaces.application.jsp.JspViewHandlerImpl.renderView(JspViewHandlerImpl.java:211)
com.backbase.bjsf.application.BackbaseViewHandler.renderView(Unknown Source)
org.apache.myfaces.lifecycle.RenderResponseExecutor.execute(RenderResponseExecutor.java:41)
org.apache.myfaces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:132)
javax.faces.webapp.FacesServlet.service(FacesServlet.java:140)
com.backbase.bjsf.webapp.filter.UploadFilter.doFilter(Unknown Source)
com.backbase.bjsf.webapp.filter.BackbaseApplicationFilter.doFilter(Unknown Source)
it.argosoft.alunniweb.modulofamiglia.filter.ModuloFamigliaUserFilter.doFilter(ModuloFamigliaUserFilter.java:97)
root cause
java.lang.NullPointerException
com.backbase.bjsf.component.UIBBComponentBase.initProperties(Unknown Source)
com.backbase.bjsf.component.UIBackbaseComponentBase.initProperties(Unknown Source)
com.backbase.bjsf.component.UIBackbaseCommandButton.initProperties(Unknown Source)
com.backbase.bjsf.application.BackbaseStateManager.b(Unknown Source)
com.backbase.bjsf.application.BackbaseStateManager.b(Unknown Source)
com.backbase.bjsf.application.BackbaseStateManager.b(Unknown Source)
com.backbase.bjsf.application.BackbaseStateManager.b(Unknown Source)
com.backbase.bjsf.application.BackbaseStateManager.b(Unknown Source)
com.backbase.bjsf.application.BackbaseStateManager.b(Unknown Source)
com.backbase.bjsf.application.BackbaseStateManager.b(Unknown Source)
com.backbase.bjsf.application.BackbaseStateManager.c(Unknown Source)
com.backbase.bjsf.application.BackbaseStateManager.saveSerializedView(Unknown Source)
org.apache.myfaces.taglib.core.ViewTag.doAfterBody(ViewTag.java:125)
org.apache.jsp.index_jsp._jspService(index_jsp.java:585)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:847)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:369)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:326)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:253)
javax.servlet.http.HttpServlet.service(HttpServlet.java:847)
org.apache.myfaces.context.servlet.ServletExternalContextImpl.dispatch(ServletExternalContextImpl.java:419)
org.apache.myfaces.application.jsp.JspViewHandlerImpl.renderView(JspViewHandlerImpl.java:211)
com.backbase.bjsf.application.BackbaseViewHandler.renderView(Unknown Source)
org.apache.myfaces.lifecycle.RenderResponseExecutor.execute(RenderResponseExecutor.java:41)
org.apache.myfaces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:132)
javax.faces.webapp.FacesServlet.service(FacesServlet.java:140)
com.backbase.bjsf.webapp.filter.UploadFilter.doFilter(Unknown Source)
com.backbase.bjsf.webapp.filter.BackbaseApplicationFilter.doFilter(Unknown Source)
it.argosoft.alunniweb.modulofamiglia.filter.ModuloFamigliaUserFilter.doFilter(ModuloFamigliaUserFilter.java:97)
note The full stack trace of the root cause is available in the JBoss Web/7.0.17.Final logs.
Которые являются различия между двумя запросами (незамедлительный а также PHP)?
Что я могу сделать, чтобы решить эту проблему?
Есть идеи?
Спасибо за помощь, и извините за мой отвратительный английский.
Giosch
Я забыл добавить пользовательский агент на две страницы php. Я просто удалил параметр комментария из двух скриптов. Это решило мою проблему
Других решений пока нет …