Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Помогите пожалуйста / 24 сообщений из 24, страница 1 из 1
23.04.2012, 10:01:15
    #37765733
JulT
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите пожалуйста
Есть сайт, на нем лежат необходимые файлы, необходимо автоматически заходить на него и скачивать этот файл. Как это делается, вроде где-то уже статью такую читала, но не могу вспомнить где, помогите пожалуйста. Спасибо:)
...
Рейтинг: 0 / 0
23.04.2012, 10:17:45
    #37765754
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите пожалуйста
Apache HttpClient
...
Рейтинг: 0 / 0
23.04.2012, 10:42:14
    #37765800
JulT
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите пожалуйста
BlazkowiczApache HttpClient

вообще ситуация следующая, обычное (ручное скачивание) у нас происходит в несколько этапов:
1. заходим на страничку по https
2. вводим логин и пароль
3. перемещаемся в нужную вкладку, нажимаем кнопку "заказать", вылазит форма, в ней два поля и галочка, выбираем нужные значения из полей, ставим галочку, нажимаем кнопку, и только после этого у нас появляется другая кнопка "скачать файл".
реально ли такое автоматизировать?
дали бы пример еще, вообще счастлива была бы))
...
Рейтинг: 0 / 0
23.04.2012, 10:43:51
    #37765805
Большой Синий Кит
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите пожалуйста
JulT,

Без изменения логики - пожалуй, только Selenium
...
Рейтинг: 0 / 0
23.04.2012, 10:50:09
    #37765819
Большой Синий Кит
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите пожалуйста
P.S. Хотя скорее всего, в итоге это будет просто ПОСТ запрос с параметрами, а его можно сделать и с помощью HttpClient.
Посмотрите с помощью firebug.
...
Рейтинг: 0 / 0
23.04.2012, 11:21:52
    #37765900
JulT
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите пожалуйста
При авторизации, которую я делаю следующим образом:
Код: java
1.
2.
3.
4.
5.
      HttpHost targetHost = new HttpHost("www.бла бла.gov.ua", 443, "https");
DefaultHttpClient httpclient = new DefaultHttpClient();
httpclient.getCredentialsProvider().setCredentials(
        new AuthScope(targetHost.getHostName(), targetHost.getPort()),
        new UsernamePasswordCredentials("бла", "бла"));


выдает ошибку:
Код: java
1.
2.
3.
javax.net.ssl.SSLPeerUnverifiedException: peer not authenticated
        at com.sun.net.ssl.internal.ssl.SSLSessionImpl.getPeerCertificates(SSLSessionImpl.java:352)
        at org.apache.http.conn.ssl.AbstractVerifier.verify(AbstractVerifier.java:128)


Что я делаю не так? Логин и пароль правильные, т.к. только что на сайт зашла по ним
...
Рейтинг: 0 / 0
23.04.2012, 13:25:46
    #37766134
JulT
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите пожалуйста
может кто-то поможет?
...
Рейтинг: 0 / 0
23.04.2012, 13:35:21
    #37766165
output
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите пожалуйста
...
Рейтинг: 0 / 0
23.04.2012, 14:00:54
    #37766221
JulT
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите пожалуйста
outputJulT,

Возможно поможет
супер, помогло, авторизовалась, выдало в консоль код странички, там есть код формы:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
<label for="id_username" class="required">Користувач:</label> <input id="id_username" type="text" name="username" maxlength="30" />
  </div>
  <div class="form-row">
    
    <label for="id_password" class="required">Пароль:</label> <input type="password" name="password" id="id_password" />
    <input type="hidden" name="this_is_the_login_form" value="1" />
    <input type="hidden" name="next" value="/client/" />
  </div>
  <div class="submit-row">
    <label>&nbsp;</label><input type="submit" value="Увійти" />


а как мне теперь отправить логин и пароль в эту форму, нужно сформировать пост запрос я так понимаю?
...
Рейтинг: 0 / 0
23.04.2012, 17:45:39
    #37766775
JulT
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите пожалуйста
Не могу понять что ему нужно, пишу такой код:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
HttpPost post = new HttpPost("https://www.xxxxxx");

        
        List <NameValuePair> parameters = new ArrayList <NameValuePair>();
        parameters.add(new BasicNameValuePair("username", "xxx"));
        parameters.add(new BasicNameValuePair("password", "xxx"));

        UrlEncodedFormEntity sendentity = new UrlEncodedFormEntity(parameters, HTTP.UTF_8);
        post.setEntity(sendentity);

        HttpResponse response = client.execute(post);

        
        System.out.print("result="+this.convertStreamToString(response.getEntity().getContent()));
        client.getConnectionManager().shutdown();


Запускаю, получаю ответ:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html lang="en">
<head>
  <meta http-equiv="content-type" content="text/html; charset=utf-8">
  <meta name="robots" content="NONE,NOARCHIVE">
  <title>403 Forbidden</title>
  <style type="text/css">
    html * { padding:0; margin:0; }
    body * { padding:10px 20px; }
    body * * { padding:0; }
    body { font:small sans-serif; background:#eee; }
    body>div { border-bottom:1px solid #ddd; }
    h1 { font-weight:normal; margin-bottom:.4em; }
    h1 span { font-size:60%; color:#666; font-weight:normal; }
    #info { background:#f6f6f6; }
    #info ul { margin: 0.5em 4em; }
    #info p, #summary p { padding-top:10px; }
    #summary { background: #ffc; }
    #explanation { background:#eee; border-bottom: 0px none; }
  </style>
</head>
<body>
<div id="summary">
  <h1>Forbidden <span>(403)</span></h1>
  <p>CSRF verification failed. Request aborted.</p>

  <p>You are seeing this message because this HTTPS site requires a 'Referer
   header' to be sent by your Web browser, but none was sent. This header is
   required for security reasons, to ensure that your browser is not being
   hijacked by third parties.</p>

  <p>If you have configured your browser to disable 'Referer' headers, please
   re-enable them, at least for this site, or for HTTPS connections, or for
   'same-origin' requests.</p>

</div>

<div id="explanation">
  <p><small>More information is available with DEBUG=True.</small></p>
</div>

</body>
</html>


Что я делаю не так, откликнитесь пожалуйста. Спасибо
...
Рейтинг: 0 / 0
23.04.2012, 17:55:54
    #37766797
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите пожалуйста
Написано же - Referer header отсутствует. Добавьте.
...
Рейтинг: 0 / 0
23.04.2012, 18:24:03
    #37766859
JulT
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите пожалуйста
BlazkowiczНаписано же - Referer header отсутствует. Добавьте.
добавила, если я правильно понимаю, то делается это так:
авторpost.addHeader("Referer", " https://www.zzzzzzzz.gov.ua/");
теперь другое пишет:
Код: java
1.
2.
 <h1>Forbidden <span>(403)</span></h1>
  <p>CSRF verification failed. Request aborted.</p>


причем стоит:
Код: java
1.
parameters.add(new BasicNameValuePair("csrfmiddlewaretoken","d11b2840d0328d58a87fd1c48e8301cb"));
...
Рейтинг: 0 / 0
23.04.2012, 18:27:29
    #37766865
JulT
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите пожалуйста
т.е. вот так:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html lang="en">
<head>
  <meta http-equiv="content-type" content="text/html; charset=utf-8">
  <meta name="robots" content="NONE,NOARCHIVE">
  <title>403 Forbidden</title>
  <style type="text/css">
    html * { padding:0; margin:0; }
    body * { padding:10px 20px; }
    body * * { padding:0; }
    body { font:small sans-serif; background:#eee; }
    body>div { border-bottom:1px solid #ddd; }
    h1 { font-weight:normal; margin-bottom:.4em; }
    h1 span { font-size:60%; color:#666; font-weight:normal; }
    #info { background:#f6f6f6; }
    #info ul { margin: 0.5em 4em; }
    #info p, #summary p { padding-top:10px; }
    #summary { background: #ffc; }
    #explanation { background:#eee; border-bottom: 0px none; }
  </style>
</head>
<body>
<div id="summary">
  <h1>Forbidden <span>(403)</span></h1>
  <p>CSRF verification failed. Request aborted.</p>

</div>

<div id="explanation">
  <p><small>More information is available with DEBUG=True.</small></p>
</div>

</body>
</html>


на реферер уже не ругается, а вот на CSRF verification да
...
Рейтинг: 0 / 0
23.04.2012, 18:51:50
    #37766907
Leonidv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите пожалуйста
JulTт.е. вот так:
на реферер уже не ругается, а вот на CSRF verification да
Ставьте HTTP-проксю и смотрите, чем ваши запросы отличаются от запросов браузера. Я обычно использую webscarab, но есть более простые вещи.
...
Рейтинг: 0 / 0
23.04.2012, 19:01:43
    #37766923
Помогите пожалуйста
JulTCSRF verification failed. Request aborted.
Всегда одно и то же значение ставите? А может каждый раз надо новое правильное?

http://www.squarefree.com/securitytips/web-developers.html#CSRF
...
Рейтинг: 0 / 0
23.04.2012, 19:10:15
    #37766936
GregTk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите пожалуйста
JulT,

Мы такое делали с помощью WireShark . Сначала записывали весь диалог, а потом его воспроизводили с помощью Apache HttpClient.
...
Рейтинг: 0 / 0
24.04.2012, 09:43:37
    #37767527
JulT
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите пожалуйста
календареведJulTCSRF verification failed. Request aborted.
Всегда одно и то же значение ставите? А может каждый раз надо новое правильное?

http://www.squarefree.com/securitytips/web-developers.html#CSRF
фот форма этой страницы:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
<div id="content-main">
<form action="" method="post" id="login-form"><div style='display:none'><input type='hidden' name='csrfmiddlewaretoken' value='a7460973d686bb83d7dc0bdb1a73fd17' /></div>
  <div class="form-row">
    
    <label for="id_username" class="required">Користувач:</label> <input id="id_username" type="text" name="username" maxlength="30" />
  </div>
  <div class="form-row">
    
    <label for="id_password" class="required">Пароль:</label> <input type="password" name="password" id="id_password" />
    <input type="hidden" name="this_is_the_login_form" value="1" />
    <input type="hidden" name="next" value="/client/" />
  </div>
  <div class="submit-row">
    <label>&nbsp;</label><input type="submit" value="Увійти" />
  </div>
</form>


судя по всему, проблема где-то здесь
Код: java
1.
<input type='hidden' name='csrfmiddlewaretoken' value='a7460973d686bb83d7dc0bdb1a73fd17'

value каждый раз генерится новое.
я все эти параметры и пытаюсь передать:
Код: java
1.
2.
3.
4.
5.
6.
List <NameValuePair> parameters = new ArrayList <NameValuePair>();
        parameters.add(new BasicNameValuePair("username", "av_mtu"));
        parameters.add(new BasicNameValuePair("password", "11111"));
        parameters.add(new BasicNameValuePair("csrfmiddlewaretoken","a7460973d686bb83d7dc0bdb1a73fd17"));
        parameters.add(new BasicNameValuePair("this_is_the_login_form","1"));
        parameters.add(new BasicNameValuePair("next","/client/"));


надо наверное точно посмотреть что шлет браузер и сравнивать после с тем, что отправляю я
...
Рейтинг: 0 / 0
24.04.2012, 10:02:55
    #37767553
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите пожалуйста
JulTнадо наверное точно посмотреть что шлет браузер и сравнивать после с тем, что отправляю я
конечно.
Как можно программировать без отладки. Это нонсенс.
...
Рейтинг: 0 / 0
24.04.2012, 13:46:00
    #37768143
JulT
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите пожалуйста
Petro123JulTнадо наверное точно посмотреть что шлет браузер и сравнивать после с тем, что отправляю я
конечно.
Как можно программировать без отладки. Это нонсенс.
короче ничего у меня не получается.
а как закодить, если авторизация проходит не по средством вэб формы, а браузер высвечивает свое окошко для ввода логина и пароля. с формой понятно, есть параметры, я их заполняю и отправляю, а что делать в данном случае, когда браузер выдает окно?
...
Рейтинг: 0 / 0
24.04.2012, 13:49:48
    #37768150
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите пожалуйста
...
Рейтинг: 0 / 0
24.04.2012, 13:51:58
    #37768159
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите пожалуйста
...
Рейтинг: 0 / 0
24.04.2012, 15:12:06
    #37768353
JulT
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите пожалуйста
Blazkowicz http://hc.apache.org/httpclient-3.x/authentication.html#Basic
ну что же это такое, делаю все как книжка пишет, и ничего не получается:
Код: java
1.
2.
3.
4.
5.
6.
7.
 response.getAllHeaders()=Date: Tue, 24 Apr 2012 11:04:56 GMT
 response.getAllHeaders()=Server: Apache/2.2.22 (FreeBSD) mod_ssl/2.2.22 OpenSSL/0.9.8e DAV/2
 response.getAllHeaders()=WWW-Authenticate: Basic realm="Need"
 response.getAllHeaders()=Content-Length: 401
 response.getAllHeaders()=Keep-Alive: timeout=5, max=100
 response.getAllHeaders()=Connection: Keep-Alive
 response.getAllHeaders()=Content-Type: text/html; charset=iso-8859-1


это я хидеры вывожу, для справки
далее:

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
    DefaultHttpClient client = new DefaultHttpClient();
    CredentialsProvider credsProvider = new BasicCredentialsProvider();
    credsProvider.setCredentials(new AuthScope("http://files.xxxxxx.gov.ua", 80, AuthScope.ANY_REALM, "basic"),new UsernamePasswordCredentials("яяя", "яяя"));
client.setCredentialsProvider(credsProvider);
HttpGet post = new HttpGet("http://files.mtu.gov.ua/private/test");

try{
        HttpResponse response2 = client.execute(post);
        System.err.print("result="+this.convertStreamToString(response2.getEntity().getContent()));
.................


Пишет:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
result=<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>401 Authorization Required</title>
</head><body>
<h1>Authorization Required</h1>
<p>This server could not verify that you
are authorized to access the document
requested.  Either you supplied the wrong
credentials (e.g., bad password), or your
browser doesn't understand how to supply
the credentials required.</p>


Логин и пароль правильные, что ему не хватает?
...
Рейтинг: 0 / 0
24.04.2012, 15:19:20
    #37768375
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите пожалуйста
Возьмите любой снифер и сравните данные, которые отправляет браузер и данные, которые отправлят ваш код.
...
Рейтинг: 0 / 0
24.04.2012, 15:24:54
    #37768395
JulT
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите пожалуйста
BlazkowiczВозьмите любой снифер и сравните данные, которые отправляет браузер и данные, которые отправлят ваш код.
да уже чуть ли не локально все это делаю, уже вот и так пробовала:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
  try {
            URL url = new URL ("http://files.mtu.gov.ua/private/test/");
            String authStr = "яяя" + ":" + "яяя";
            String authEncoded = Base64.encodeBytes(authStr.getBytes());

            HttpURLConnection connection = (HttpURLConnection) url.openConnection();
            connection.setRequestMethod("POST");
            connection.setDoOutput(true);
            connection.setRequestProperty  ("Authorization", "Basic " + authEncoded);
            InputStream content = (InputStream)connection.getInputStream();
            BufferedReader in   =
                new BufferedReader (new InputStreamReader (content));
            String line;
            while ((line = in.readLine()) != null) {
                System.out.println(line);
            }
        } catch(Exception e) {
            e.printStackTrace();
        }


и полезло:
Код: java
1.
2.
java.io.FileNotFoundException: http://files.mtu.gov.ua/private/test/
        at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1434)


фигня какая-то
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Помогите пожалуйста / 24 сообщений из 24, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]