Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Работа с сетью в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.04.2017, 19:45   #31
pas2
Пользователь
 
Регистрация: 02.01.2016
Сообщений: 42
По умолчанию

Цитата:
Сообщение от Aliens_wolfs Посмотреть сообщение
Можете показать кусочек текста с ссылкой полученного в мемо, чтобы потеснить.
Или архив с полученной страницей сохраните здесь
Выкладываю полностью сохраненную страницу, и страницу полученную в мемо
Вложения
Тип файла: rar Vid.rar (1.40 Мб, 18 просмотров)
pas2 вне форума Ответить с цитированием
Старый 08.04.2017, 22:38   #32
Aliens_wolfs
Форумчанин
 
Регистрация: 16.12.2009
Сообщений: 902
По умолчанию

Сейчас снифером проверю что куда отправляется у меня страница заработала

Пост #6
Цитата:
Сообщение от Alex11223
Если этот второй запрос не работает, то значит вы делаете что-то не так, не поставили какой-то заголовок (Referer, ...), не получили куки и т.п.
Он оказался прав. Если бы вы сразу воспользовались снифером то сами бы все в запросах увидели.

Все, получилось полную ссылку увидеть.
Вот держи код, там при запросе нужно было в
Get http://ahmed9zg.beget.tech/ok-tv/ntv.php заголовка прописать Referer: http://ok-tv.org/channels/1-ntv.html
И снифером не ленитесь пользоваться тогда будете быстрее решать задачи такого плана

В WinInit
Код:
uses
......... WinInet;

function GetSite(URL: String; Referer: string=''): string;
const
 Accept = 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' + sLineBreak;
 ProxyConnection = 'Proxy-Connection: Keep-Alive' + sLineBreak;
 LNG = 'Accept-Language: ru' + sLineBreak;
 AGENT = 'User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) '+
 'Chrome/56.0.2924.87 Safari/537.36 OPR/43.0.2442.1144 (Edition Yx)' + sLineBreak;
var
URL_Base,URL_Page: String;
hInet,hCon,hReq: Pointer;
  Status, StatusSize, Index: DWORD;
  bytes, b, posi: Cardinal;
  ResponseString: AnsiString;
  SRequest: String;
begin

  if pos('https://',URL)>0 then
  delete(URL,1,length('https://'))
  else
   if pos('http://',URL)>0 then
   delete(URL,1,length('http://'));

  URL_Base:=PChar(copy(URL,1,pos('/',URL)-1));
  URL_Page:=PChar(copy(URL,pos('/',URL)+1,length(URL)-pos('/',URL)));

 hInet:= InternetOpen('My Agent',INTERNET_OPEN_TYPE_PRECONFIG,nil,nil,0);
 if not Assigned(hInet) then
begin
Showmessage('Error: InternetOpen');
exit;
end;

 hCon:= InternetConnect(hInet, PChar(URL_Base), 80, nil, nil, INTERNET_SERVICE_HTTP, 0, 0);
  if not Assigned(hCon) then
  begin
  Showmessage('Error: InternetConnect');
  exit;
   end;

  hReq:= HttpOpenRequest(hCon, 'GET', PAnsichar(URL_Page),'HTTP/1.0', nil,nil,INTERNET_FLAG_KEEP_CONNECTION, 0);
  if not Assigned(hReq) then
  begin
  Showmessage('Error: HttpOpenRequest');
  exit;
  end;

         // добавляем необходимые заголовки к запросу
      HttpAddRequestHeaders(hReq, Accept,
        Length(Accept), HTTP_ADDREQ_FLAG_ADD);
      HttpAddRequestHeaders(hReq, ProxyConnection,
        Length(ProxyConnection), HTTP_ADDREQ_FLAG_ADD);
      HttpAddRequestHeaders(hReq, LNG,
        Length(LNG), HTTP_ADDREQ_FLAG_ADD);
      HttpAddRequestHeaders(hReq, AGENT,
        Length(AGENT), HTTP_ADDREQ_FLAG_ADD);

   //Добавлено это
    if Referer <> '' then
   begin
   Referer:= 'Referer: ' + Referer + sLineBreak;
    HttpAddRequestHeaders(hReq, PAnsichar(Referer),
        Length(Referer), HTTP_ADDREQ_FLAG_ADD);
    end;

        // Проверяем запрос:
      StatusSize := 0;
      Index := 0;
      SRequest := '';
      HttpQueryInfo(hReq, HTTP_QUERY_RAW_HEADERS_CRLF or
        HTTP_QUERY_FLAG_REQUEST_HEADERS, @SRequest[1], StatusSize, Index);
      if StatusSize > 0 then
      begin
         SetLength(SRequest, StatusSize);
        HttpQueryInfo(hReq, HTTP_QUERY_RAW_HEADERS_CRLF or
          HTTP_QUERY_FLAG_REQUEST_HEADERS, @SRequest[1], StatusSize, Index);
      end;

  // Отправляем запрос
  if not (HttpSendRequest(hReq,'',0,nil,0)) then
  begin
  Showmessage('Error: HttpSendRequest');
  exit;
  end;
  //Смотрим ответ сервера
      showmessage(GetQueryInfo(hReq));

         posi := 1;
          b := 1;
          ResponseString := '';
          while b > 0 do
          if InternetQueryDataAvailable( hReq, bytes, 0, 0 ) then
          begin
            SetLength(ResponseString, Length(ResponseString) + bytes );
            InternetReadFile(hReq, @ResponseString[Posi], bytes, b );
            Inc(Posi, b);
          end;

   InternetCloseHandle(hReq);
   InternetCloseHandle(hCon);
   InternetCloseHandle(hInet);
  Result:=ResponseString;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
memo1.Text:= UTF8ToAnsi(GetSite('http://ahmed9zg.beget.tech/ok-tv/ntv.php', 'http://ok-tv.org/channels/1-ntv.html'));
end;
Ну или так тоже работает
Код:
uses
......... ssl_openssl, HTTPSend;

procedure TForm1.Button3Click(Sender: TObject);
var
pList : TStringList;
httpsend: THTTPSend;
begin
 pList:= TStringList.Create;
 httpsend:=THTTPSend.Create;
 try
  httpsend.Protocol := '1.1';
  httpsend.UserAgent:=
   'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.63 Safari/537.36';
    httpsend.Headers.Add('Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8');
    httpsend.Headers.Add('Accept-Language: en-US,en;q=0.5');
  //Добавил это
    httpsend.Headers.Add('Referer: http://ok-tv.org/channels/1-ntv.html');
    httpsend.Headers.Add('Connection: keep-alive');
    httpsend.Sock.CreateWithSSL(TSSLOpenSSL);
    httpsend.Sock.SSLDoConnect;
    httpsend.HTTPMethod('get','http://ahmed9zg.beget.tech/ok-tv/ntv.php');
    pList.LoadFromStream(httpsend.Document);
    // для получения страницы
     Memo1.Lines.Add(UTF8ToAnsi(pList.Text));
 finally
 pList.free;
 httpsend.free;
end;
end;
Для проверки полученной ссылки из кода страницы можете в браузере прописать так
http://ok-tv.org/uppod-hls.swf?file=http://s5a.privit.pro:8081/ntv/index.m3u8?..............

Последний раз редактировалось Aliens_wolfs; 09.04.2017 в 01:45.
Aliens_wolfs вне форума Ответить с цитированием
Старый 09.04.2017, 11:40   #33
pas2
Пользователь
 
Регистрация: 02.01.2016
Сообщений: 42
По умолчанию

Цитата:
Сообщение от Aliens_wolfs Посмотреть сообщение
Он оказался прав. Если бы вы сразу воспользовались снифером то сами бы все в запросах увидели.
Спасибо, +++++++!!!! Не в тему, пробовал через synapse выдает ошибку модуля, скачал с оф.сайта библиотеку, прописал пути к библиотеке и получаю на выходе, что может быть не так?
[dcc32 Fatal Error] blcksock.pas(106): F2063 Could not compile used unit 'synautil.pas'
[dcc32 Error] synautil.pas(609): E2003 Undeclared identifier: 'TimeSeparator'
[dcc32 Warning] synautil.pas(1965): W1000 Symbol 'StrLComp' is deprecated: 'Moved to the AnsiStrings unit'
pas2 вне форума Ответить с цитированием
Старый 09.04.2017, 11:45   #34
Aliens_wolfs
Форумчанин
 
Регистрация: 16.12.2009
Сообщений: 902
По умолчанию

Что за Delphi у вас? Возможно не к той версии нашли модули, еще можно в ручную путь прописать в Delphi Libray path к модулям

Последний раз редактировалось Aliens_wolfs; 09.04.2017 в 11:49.
Aliens_wolfs вне форума Ответить с цитированием
Старый 09.04.2017, 11:50   #35
pas2
Пользователь
 
Регистрация: 02.01.2016
Сообщений: 42
По умолчанию

Цитата:
Сообщение от Aliens_wolfs Посмотреть сообщение
Что за Delphi у вас ? Возможно не к той версии нашли, еще можно в ручную к путь пропишите в Libray path к модулям
XE7 - http://www.ararat.cz/synapse/doku.php/download - с отсюда скачал, прописал в ручную, Libray path к модулям
pas2 вне форума Ответить с цитированием
Старый 09.04.2017, 11:52   #36
Aliens_wolfs
Форумчанин
 
Регистрация: 16.12.2009
Сообщений: 902
По умолчанию

Если вы про окно в WinInt ответа сервера то в коде удалите это
Код:
//Смотрим ответ сервера
 showmessage(GetQueryInfo(hReq));
И поищите Synaps для XE7 в других местах именно для этой Delphi
вот попробуйте это http://turbobit.net/2sa4kz2s3i85.html

Да и насколько я помню при переустановки XE можно модули выбрать нужные

Последний раз редактировалось Aliens_wolfs; 09.04.2017 в 12:17.
Aliens_wolfs вне форума Ответить с цитированием
Старый 09.04.2017, 12:47   #37
pas2
Пользователь
 
Регистрация: 02.01.2016
Сообщений: 42
По умолчанию

Цитата:
Сообщение от Aliens_wolfs Посмотреть сообщение
Если вы про окно в WinInt ответа сервера то в коде удалите это
Код:
//Смотрим ответ сервера
 showmessage(GetQueryInfo(hReq));
И поищите Synaps для XE7 в других местах именно для этой Delphi
вот попробуйте это http://turbobit.net/2sa4kz2s3i85.html

Да и насколько я помню при переустановки XE можно модули выбрать нужные
Спасибо, +++++++ еще раз, модуль не подошел поищу еще что то, тему можно закрывать! Все решено!
pas2 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Получить ссылку на ячейки blacklight Microsoft Office Excel 5 23.09.2009 14:32
Получить ссылку на видео файл SunKnight Свободное общение 6 11.06.2009 02:46
как получить ProgressChange отдельного фрейма? alex1245 Работа с сетью в Delphi 0 22.03.2009 03:20
Help!!! Как в Delphi сделать ссылку на видео? Vredinka Помощь студентам 1 05.03.2008 13:34