Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Как сделать в LWP аналог курлового --connect-to  (Прочитано 6910 раз)
0 Пользователей и 2 Гостей смотрят эту тему.
perl6
Помогающий

ru
Offline Offline

« : 28-08-2021 21:40 » 

Приветствую. Что-то нигде не найду опцию в LWP. Собственно, как сделать?
Записан
RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #1 : 28-08-2021 22:46 » 

Смотрим, к примеру, get: https://metacpan.org/pod/LWP::UserAgent#get
Цитата
This method will dispatch a GET request on the given URL. Further arguments can be given to initialize the headers of the request. These are given as separate name/value pairs.
Поставь в url IP и порт, куда хочешь подключиться, а в заголовоке Host укажи домен. Возможно прокатит.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
perl6
Помогающий

ru
Offline Offline

« Ответ #2 : 29-08-2021 03:46 » 

Смотрим, к примеру, get: https://metacpan.org/pod/LWP::UserAgent#get
Цитата
This method will dispatch a GET request on the given URL. Further arguments can be given to initialize the headers of the request. These are given as separate name/value pairs.
Поставь в url IP и порт, куда хочешь подключиться, а в заголовоке Host укажи домен. Возможно прокатит.

Увы, не канает.
Записан
RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #3 : 29-08-2021 12:15 » 

Попробуй proxy. Попробуй request_preprepare для задания Host.
Ну и ничего не мешает использовать curl, модули для него есть. Причем есть поддержка множественных одновременных запросов: внутренний цикл обработки с внешним приводом.

Ты запрос дампил? Куда подключается? Что в Host?
« Последнее редактирование: 29-08-2021 12:17 от RXL » Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
perl6
Помогающий

ru
Offline Offline

« Ответ #4 : 30-08-2021 20:20 » 

В общем, тут вообще хз, что творится. Идея в том, чтобы парсить данные с сайтов. Для этого, я прикупил в одном сервисе проксей, на выходе получаем рандомный чистый рез. айпи.
Так вот, все нормально работает, НО, с одним доменом ни в какую не хочет работать. Домен спрятан за CF. Даже курлом без опции --connect-to не прет. Опять-таки, НО, с этим же доменом прекрасно работает паблик прокси (не все)... В чем дело, не пойму, две ночи уже сидел, мозг сломал...

Цитата: RXL
Попробуй proxy. Попробуй request_preprepare для задания Host.
Пробовал просто к запросам добавлять заголовок Host, без толку. Есть смысл добавить через обработчик request_preprepare, что это изменит?

Цитата: RXL
Ну и ничего не мешает использовать curl, модули для него есть. Причем есть поддержка множественных одновременных запросов: внутренний цикл обработки с внешним приводом.
Да, не охото переписывать уже готовые скрипты. Кроме того, эти модули еще надо под виндой скомпилить умудриться...

Цитата: RXL
Ты запрос дампил? Куда подключается? Что в Host?

Вот дамп для курла:

Код:
Proxy replied 200 to CONNECT request
* CONNECT phase completed!
* ALPN, offering h2
* ALPN, offering http/1.1
* successfully set certificate verify locations:
*  CAfile: C:\Strawberry\curl-7.78.0-win32-mingw\bin\curl-ca-bundle.crt
*  CApath: none
* TLSv1.3 (OUT), TLS handshake, Client hello (1):
* OpenSSL SSL_connect: SSL_ERROR_SYSCALL in connection to kringrdrct.com.buyopic.ru:443
* Closing connection 0
curl: (35) OpenSSL SSL_connect: SSL_ERROR_SYSCALL in connection to <domain>:443

А вот дамп для LWP:

Код:
==> 500 error while setting up ssl connection (SSL connect attempt failed)

.-----------------+-------------------------------.
| Response Header | Value                         |
+-----------------+-------------------------------+
| Client-Date     | Mon, 30 Aug 2021 20:20:36 GMT |
| Client-Warning  | Internal response             |
| Content-Type    | text/plain                    |
'-----------------+-------------------------------'

.----------------------------------------------------------------------------------------------------------------------.
| Content                                                                                                              |
+----------------------------------------------------------------------------------------------------------------------+
| error while setting up ssl connection (SSL connect attempt failed) at C:/Strawberry/perl/site/lib/LWP/Protocol/http- |
| s/connect/Socket.pm line 23, <FIL> line 328.





« Последнее редактирование: 30-08-2021 20:23 от perl6 » Записан
RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #5 : 30-08-2021 22:53 » 

Подозреваю, дело в TLS 1.3. Проверь, что LWP его поддерживает.
Сам CURL есть под любой утюг и микроволновку. Думаю, можно найти и сборку модулей под винду.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
perl6
Помогающий

ru
Offline Offline

« Ответ #6 : 31-08-2021 00:52 » new

Цитата: RXL
Подозреваю, дело в TLS 1.3. Проверь, что LWP его поддерживает.

С вкл. tls выдает вот, что:

Код:
error while setting up ssl connection (SSL connect attempt failed error:1409442E:SSL routines:ssl3_read_bytes:tlsv1-
alert protocol version) at C:/Strawberry/perl/site/lib/LWP/Protocol/https/connect/Socket.pm line 23, <FIL> line 32-

Вообще, ничего не понятно...

Вот так с нужным мне прокси в том же курле не прет:

Код:
curl -x http://user-uuid-6bb853863ac142ecbab07219e3323d43:a17d31678f10@zagent1253.hola.org:22223 -H "Host: kringrdrct.com" https://kringrdrct.com.buyopic.ru/who/article.min.js?id=1630112277 -v -k
*   Trying 142.93.72.231:22223...
* Connected to zagent1253.hola.org (142.93.72.231) port 22223 (#0)
* allocate connect buffer!
* Establish HTTP proxy tunnel to kringrdrct.com.buyopic.ru:443
* Proxy auth using Basic with user 'user-uuid-6bb853863ac142ecbab07219e3323d43'
> CONNECT kringrdrct.com.buyopic.ru:443 HTTP/1.1
> Host: kringrdrct.com.buyopic.ru:443
> Proxy-Authorization: Basic dXNlci11dWlkLTZiYjg1Mzg2M2FjMTQyZWNiYWIwNzIxOWUzMzIzZDQzOmExN2QzMTY3OGYxMA==
> User-Agent: curl/7.78.0
> Proxy-Connection: Keep-Alive
>
< HTTP/1.1 200 OK
< x-hola-forbid-peer: 1
<
* Proxy replied 200 to CONNECT request
* CONNECT phase completed!
* ALPN, offering h2
* ALPN, offering http/1.1
* TLSv1.3 (OUT), TLS handshake, Client hello (1):
* OpenSSL SSL_connect: SSL_ERROR_SYSCALL in connection to kringrdrct.com.buyopic.ru:443
* Closing connection 0
curl: (35) OpenSSL SSL_connect: SSL_ERROR_SYSCALL in connection to kringrdrct.com.buyopic.ru:443

А вот так все отлично фурычит (опция --connect-to):

Код:
curl -x http://user-uuid-6bb853863ac142ecbab07219e3323d43:a17d31678f10@zagent1253.hola.org:22223 -H --connect-to kringrdrct.com:443:kringrdrct.com.buyopic.ru:443 https://kringrdrct.com/who/article.min.js?id=1630112277 -v -k
* Closing connection -1
curl: (3) URL using bad/illegal format or missing URL
*   Trying 142.93.72.231:22223...
* Connected to zagent1253.hola.org (142.93.72.231) port 22223 (#0)
* allocate connect buffer!
* Establish HTTP proxy tunnel to kringrdrct.com:443
* Proxy auth using Basic with user 'user-uuid-6bb853863ac142ecbab07219e3323d43'
> CONNECT kringrdrct.com:443 HTTP/1.1
> Host: kringrdrct.com:443
> Proxy-Authorization: Basic dXNlci11dWlkLTZiYjg1Mzg2M2FjMTQyZWNiYWIwNzIxOWUzMzIzZDQzOmExN2QzMTY3OGYxMA==
> User-Agent: curl/7.78.0
> Proxy-Connection: Keep-Alive
>
< HTTP/1.1 200 OK
< x-hola-forbid-peer: 1
<
* Proxy replied 200 to CONNECT request
* CONNECT phase completed!
* ALPN, offering h2
* ALPN, offering http/1.1
* TLSv1.3 (OUT), TLS handshake, Client hello (1):
* TLSv1.3 (IN), TLS handshake, Server hello (2):
* TLSv1.2 (IN), TLS handshake, Certificate (11):
* TLSv1.2 (IN), TLS handshake, Server key exchange (12):
* TLSv1.2 (IN), TLS handshake, Server finished (14):
* TLSv1.2 (OUT), TLS handshake, Client key exchange (16):
* TLSv1.2 (OUT), TLS change cipher, Change cipher spec (1):
* TLSv1.2 (OUT), TLS handshake, Finished (20):
* TLSv1.2 (IN), TLS handshake, Finished (20):
* SSL connection using TLSv1.2 / ECDHE-RSA-AES256-GCM-SHA384
* ALPN, server accepted to use h2
* Server certificate:
*  subject: CN=kringrdrct.com
*  start date: Jul 28 03:23:06 2021 GMT
*  expire date: Oct 26 03:23:04 2021 GMT
*  issuer: C=US; O=Let's Encrypt; CN=R3
*  SSL certificate verify result: self signed certificate in certificate chain (19), continuing anyway.
* Using HTTP2, server supports multiplexing
* Connection state changed (HTTP/2 confirmed)
* Copying HTTP/2 data in stream buffer to connection buffer after upgrade: len=0
* Using Stream ID: 1 (easy handle 0x22426f8)
> GET /who/article.min.js?id=1630112277 HTTP/2
> Host: kringrdrct.com
> user-agent: curl/7.78.0
> accept: */*
>
* Connection state changed (MAX_CONCURRENT_STREAMS == 128)!
< HTTP/2 200
< server: nginx/1.18.0
< date: Tue, 31 Aug 2021 00:42:11 GMT
< content-type: application/javascript
< content-length: 40272
< last-modified: Mon, 03 Aug 2020 14:43:52 GMT
< etag: "5f2822a8-9d50"
< expires: Wed, 01 Sep 2021 00:42:11 GMT
< cache-control: max-age=86400
< x-frame-options: SAMEORIGIN
< accept-ranges: bytes

И, тоже самое с бесплатным прокси, работает авантюра с заголовком Host, не надо прибегать к более тонкой настройке через --connect-to:


Код:
curl -x http://caicybyo-rotate:e721vwehto8r@209.127.184.202:80 -H "Host: kringrdrct.com" https://kringrdrct.com.buyopic.ru/who/article.min.js?id=1630112277 -v -k
*   Trying 209.127.184.202:80...
* Connected to 209.127.184.202 (209.127.184.202) port 80 (#0)
* allocate connect buffer!
* Establish HTTP proxy tunnel to kringrdrct.com.buyopic.ru:443
* Proxy auth using Basic with user 'caicybyo-rotate'
> CONNECT kringrdrct.com.buyopic.ru:443 HTTP/1.1
> Host: kringrdrct.com.buyopic.ru:443
> Proxy-Authorization: Basic Y2FpY3lieW8tcm90YXRlOmU3MjF2d2VodG84cg==
> User-Agent: curl/7.78.0
> Proxy-Connection: Keep-Alive
>
< HTTP/1.0 200 OK
<
* Proxy replied 200 to CONNECT request
* CONNECT phase completed!
* ALPN, offering h2
* ALPN, offering http/1.1
* TLSv1.3 (OUT), TLS handshake, Client hello (1):
* TLSv1.3 (IN), TLS handshake, Server hello (2):
* TLSv1.2 (IN), TLS handshake, Certificate (11):
* TLSv1.2 (IN), TLS handshake, Server key exchange (12):
* TLSv1.2 (IN), TLS handshake, Server finished (14):
* TLSv1.2 (OUT), TLS handshake, Client key exchange (16):
* TLSv1.2 (OUT), TLS change cipher, Change cipher spec (1):
* TLSv1.2 (OUT), TLS handshake, Finished (20):
* TLSv1.2 (IN), TLS handshake, Finished (20):
* SSL connection using TLSv1.2 / ECDHE-RSA-AES256-GCM-SHA384
* ALPN, server accepted to use h2
* Server certificate:
*  subject: C=RU; ST=CHUKOTKA; L=IELEN; O=PRONCLUB; OU=IT; CN=localhost
*  start date: Aug 12 10:01:12 2020 GMT
*  expire date: Aug 10 10:01:12 2030 GMT
*  issuer: C=RU; ST=CHUKOTKA; L=IELEN; O=PRONCLUB; OU=IT; CN=localhost
*  SSL certificate verify result: self signed certificate (18), continuing anyway.
* Using HTTP2, server supports multiplexing
* Connection state changed (HTTP/2 confirmed)
* Copying HTTP/2 data in stream buffer to connection buffer after upgrade: len=0
* Using Stream ID: 1 (easy handle 0x22e2e40)
> GET /who/article.min.js?id=1630112277 HTTP/2
> Host: kringrdrct.com
> user-agent: curl/7.78.0
> accept: */*
>
* Connection state changed (MAX_CONCURRENT_STREAMS == 128)!
< HTTP/2 200
< server: nginx/1.18.0
< date: Tue, 31 Aug 2021 00:44:33 GMT
< content-type: application/javascript
< content-length: 40272
< last-modified: Mon, 03 Aug 2020 14:43:52 GMT
< etag: "5f2822a8-9d50"
< expires: Wed, 01 Sep 2021 00:44:33 GMT
< cache-control: max-age=86400
< x-frame-options: SAMEORIGIN
< accept-ranges: bytes

А вот, что нам говорит LWP. Т.к. в нем нет опции --connect-to и хз, как прописать 'Host', кроме как в заголовке:

Ч/з нужный платный прокси запрос не канает:

Код:
CONNECT http://kringrdrct.com.buyopic.ru:443

.---------------------------------+------------------------------------------------------------------------------------.
| Request (before sending) Header | Value                                                                              |
+---------------------------------+------------------------------------------------------------------------------------+
| Accept-Language                 | ru,ru_RU ;q=0.7,ru;q=0.3                                                           |
| Host                            | kringrdrct.com                                                                     |
| User-Agent                      | Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_3) AppleWebKit/537.36 (KHTML, like G- |
|                                 | ecko) Chrome/73.0.3683.75 Safari/537.36                                            |
'---------------------------------+------------------------------------------------------------------------------------'

.--------------------------------+-------------------------------------------------------------------------------------.
| Request (after sending) Header | Value                                                                               |
+--------------------------------+-------------------------------------------------------------------------------------+
| Accept-Language                | ru,ru_RU ;q=0.7,ru;q=0.3                                                            |
| Host                           | kringrdrct.com                                                                      |
| User-Agent                     | Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_3) AppleWebKit/537.36 (KHTML, like Ge- |
|                                | cko) Chrome/73.0.3683.75 Safari/537.36                                              |
'--------------------------------+-------------------------------------------------------------------------------------'

==> 200 OK

.-----------------+-------------------------------.
| Response Header | Value                         |
+-----------------+-------------------------------+
| Client-Date     | Tue, 31 Aug 2021 00:47:18 GMT |
| Client-Peer     | 192.241.181.49:24182          |
'-----------------+-------------------------------'

.--------------------------------+-------------------------------------------------------------------------------------.
| Request (after sending) Header | Value                                                                               |
+--------------------------------+-------------------------------------------------------------------------------------+
| Accept-Language                | ru,ru_RU ;q=0.7,ru;q=0.3                                                            |
| Host                           | kringrdrct.com                                                                      |
| Referer                        |                                                                                     |
| User-Agent                     | Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_3) AppleWebKit/537.36 (KHTML, like Ge- |
|                                | cko) Chrome/73.0.3683.75 Safari/537.36                                              |
'--------------------------------+-------------------------------------------------------------------------------------'

==> 500 error while setting up ssl connection (SSL connect attempt failed error:1409442E:SSL routines:ssl3_read_bytes:tlsv1 alert protocol version)

.-----------------+-------------------------------.
| Response Header | Value                         |
+-----------------+-------------------------------+
| Client-Date     | Tue, 31 Aug 2021 00:47:18 GMT |
| Client-Warning  | Internal response             |
| Content-Type    | text/plain                    |
'-----------------+-------------------------------'

.----------------------------------------------------------------------------------------------------------------------.
| Content                                                                                                              |
+----------------------------------------------------------------------------------------------------------------------+
| error while setting up ssl connection (SSL connect attempt failed error:1409442E:SSL routines:ssl3_read_bytes:tlsv1- |
|  alert protocol version) at C:/Strawberry/perl/site/lib/LWP/Protocol/https/connect/Socket.pm line 23, <FIL> line 32- |
| 8.                                                                                                                   |
'----------------------------------------------------------------------------------------------------------------------'

.----------------------------------------------------------------------------------------------------------------------.
| Text                                                                                                                 |
+----------------------------------------------------------------------------------------------------------------------+
| error while setting up ssl connection (SSL connect attempt failed error:1409442E:SSL routines:ssl3_read_bytes:tlsv1- |
|  alert protocol version) at C:/Strawberry/perl/site/lib/LWP/Protocol/https/connect/Socket.pm line 23, <FIL> line 32- |
| 8.                                                                                                                   |
'-------------------------

А через бесплатный все канает, как надо (но, только с TLSv1_2, с TLSv1_3 тоже дает ошибку):


Код:
GET https://kringrdrct.com.buyopic.ru/who/article.min.js

GET Params:

.-----+------------.
| Key | Value      |
+-----+------------+
| id  | 1630112277 |
'-----+------------'

.---------------------------------+------------------------------------------------------------------------------------.
| Request (before sending) Header | Value                                                                              |
+---------------------------------+------------------------------------------------------------------------------------+
| Accept-Language                 | ru,ru_RU ;q=0.7,ru;q=0.3                                                           |
| Host                            | kringrdrct.com                                                                     |
| Referer                         |                                                                                    |
| User-Agent                      | Mozilla/5.0 (Windows NT 6.1, WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome- |
|                                 | /70.0.3538.67 Safari/537.36                                                        |
'---------------------------------+------------------------------------------------------------------------------------'

CONNECT http://kringrdrct.com.buyopic.ru:443

.---------------------------------+------------------------------------------------------------------------------------.
| Request (before sending) Header | Value                                                                              |
+---------------------------------+------------------------------------------------------------------------------------+
| Accept-Language                 | ru,ru_RU ;q=0.7,ru;q=0.3                                                           |
| Host                            | kringrdrct.com                                                                     |
| User-Agent                      | Mozilla/5.0 (Windows NT 6.1, WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome- |
|                                 | /70.0.3538.67 Safari/537.36                                                        |
'---------------------------------+------------------------------------------------------------------------------------'

.--------------------------------+-------------------------------------------------------------------------------------.
| Request (after sending) Header | Value                                                                               |
+--------------------------------+-------------------------------------------------------------------------------------+
| Accept-Language                | ru,ru_RU ;q=0.7,ru;q=0.3                                                            |
| Host                           | kringrdrct.com                                                                      |
| User-Agent                     | Mozilla/5.0 (Windows NT 6.1, WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/- |
|                                | 70.0.3538.67 Safari/537.36                                                          |
'--------------------------------+-------------------------------------------------------------------------------------'

==> 200 OK

.-----------------+-------------------------------.
| Response Header | Value                         |
+-----------------+-------------------------------+
| Client-Date     | Tue, 31 Aug 2021 00:50:41 GMT |
| Client-Peer     | 209.127.184.202:80            |
'-----------------+-------------------------------'

.--------------------------------+-------------------------------------------------------------------------------------.
| Request (after sending) Header | Value                                                                               |
+--------------------------------+-------------------------------------------------------------------------------------+
| Accept-Language                | ru,ru_RU ;q=0.7,ru;q=0.3                                                            |
| Host                           | kringrdrct.com                                                                      |
| Referer                        |                                                                                     |
| User-Agent                     | Mozilla/5.0 (Windows NT 6.1, WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/- |
|                                | 70.0.3538.67 Safari/537.36                                                          |
'--------------------------------+-------------------------------------------------------------------------------------'

==> 200 OK

.-------------------------+---------------------------------------------------------.
| Response Header         | Value                                                   |
+-------------------------+---------------------------------------------------------+
| Accept-Ranges           | bytes                                                   |
| Cache-Control           | max-age=86400                                           |
| Client-Date             | Tue, 31 Aug 2021 00:50:42 GMT                           |
| Client-Peer             | 209.127.184.202:80                                      |
| Client-Response-Num     | 1                                                       |
| Client-SSL-Cert-Issuer  | /C=RU/ST=CHUKOTKA/L=IELEN/O=PRONCLUB/OU=IT/CN=localhost |
| Client-SSL-Cert-Subject | /C=RU/ST=CHUKOTKA/L=IELEN/O=PRONCLUB/OU=IT/CN=localhost |
| Client-SSL-Cipher       | ECDHE-RSA-AES128-GCM-SHA256                             |
| Client-SSL-Socket-Class | IO::Socket::SSL                                         |
| Client-SSL-Version      | TLSv1_2                                                 |
| Client-SSL-Warning      | Peer certificate not verified                           |
| Connection              | keep-alive                                              |
| Content-Length          | 40272                                                   |
| Content-Type            | application/javascript                                  |
| Date                    | Tue, 31 Aug 2021 00:50:33 GMT                           |
| ETag                    | "5f2822a8-9d50"                                         |
| Expires                 | Wed, 01 Sep 2021 00:50:33 GMT                           |
| Last-Modified           | Mon, 03 Aug 2020 14:43:52 GMT                           |
| Server                  | nginx/1.18.0                                            |
| X-Frame-Options         | SAMEORIGIN                                              |
'-------------------------+---------------------------------------------------------'

.----------------------------------------------------------------------------------------------------------------------.
| Content            


Цитата
Сам CURL есть под любой утюг и микроволновку. Думаю, можно найти и сборку модулей под винду.

Курл то есть, да я имел ввиду его модули, перловые, WWW:Curl тот же, под винду, их так просто не скомпилить...
« Последнее редактирование: 31-08-2021 00:55 от perl6 » Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines