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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 19.12.2017, 16:42   #61
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Цитата:
Сообщение от Ship_1 Посмотреть сообщение
мне этот код ничем не поможет.
Он как бы намекает, что не надо придумывать сложности на пустом месте.
Достаточно просто GET-POST-GET с сохранением куков между ними.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 19.12.2017, 16:50   #62
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
python teremok.py
173
подтверждаю, скрипт работает.
Это просто взрыв мозга.
(правда, чтобы проверить, пришлось установить питон на свой комп).
Но это того стоило.
Спасибо.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 19.12.2017, 16:53   #63
Ship_1
Форумчанин
 
Регистрация: 10.02.2014
Сообщений: 526
По умолчанию

А у Indy, кажется, отдельный компонент для куков?
Aliens_wolfs, мне не принципиально на Synapse, если что. На Indy даже удобней. Но кроме них двоих у меня для этих целей больше ничего.
Ship_1 вне форума Ответить с цитированием
Старый 19.12.2017, 16:55   #64
Aliens_wolfs
Форумчанин
 
Регистрация: 16.12.2009
Сообщений: 902
По умолчанию

Цитата:
Целиком скопировал Ваши эти куки. Не сработало...
Все верно что не сработало этот Cookie: PHPSESSID= постоянно разный при каждой ссесии но он со временем перестает работать поэтому нужно обновлять его в запросах

Цитата:
GET-POST-GET
Я так и делаю но что то не так
В первом запросе GET получаю куки, в Post отправляю вместе с ID а в следующем GET должен получить цену
Снифером все смотрю

Цитата:
А у Indy, кажется, отдельный компонент для куков
httpsend сохраняет и так куки вот же в примере
http://www.programmersforum.ru/showp...7&postcount=46
я там подменял при находении кука города spb на msk

Код для запроса цены
Код:
procedure SendHTTP(URL: String);
var
httpsend: THttpSend;
pList: TStringList;
DocData: TStringStream;
i: integer;
begin
pList:= TStringList.Create;
httpsend:=THTTPSend.Create;
DocData:=TStringStream.Create('');
try
  httpsend.Protocol := '1.1';
  httpsend.UserAgent:=  'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 '+
'(KHTML, like Gecko) Chrome/62.0.3202.89 Safari/537.36 OPR/49.0.2725.47';
//Первый запрос для получения Cookies
httpsend.HTTPMethod('GET', URL);
//делаем Post запрос уже c Cookie полученными от сервера
httpsend.Headers.Clear;
//httpsend.Headers.Add('Referer: ' + URL); // тоже пробовал
//httpsend.Headers.Add('Accept-Language: ru-RU,ru;q=0.9,en-US;q=0.8,en;q=0.7');
//httpsend.Headers.Add('Cache-Control: no-cache');
//Делаем подмену Cookies на московский регион
 For i:= 0 to httpsend.Cookies.Count - 1 do
if Pos(AnsiUpperCase('TEREMOK_CURRENT_CITY='), AnsiUpperCase(httpsend.Cookies.Strings[i])) <> 0 then
httpsend.Cookies.Strings[i]:= 'TEREMOK_CURRENT_CITY=msk';
//заполняем тело документа для отправки
DocData.WriteString('addr_id=603');
HTTPSend.Document.LoadFromStream(DocData);
httpsend.HTTPMethod('POST', URL);
  //Далее пытаемся загрузить страницу с ценой
httpsend.Headers.Clear;
httpsend.HTTPMethod('GET', URL);

 //pList.LoadFromStream(httpsend.Document);
// pList.SaveToFile('terem_result1.html');
Form1.Memo1.Lines.LoadFromStream(httpsend.Document);
Form1.Memo1.Lines.SaveToFile('D:\terem_result1.html');
Form1.Memo1.Lines.Text:= Utf8ToAnsi(Form1.Memo1.Lines.Text);

finally
pList.Free;
httpsend.Free;
DocData.Free
end;

end;

procedure TForm1.Button2Click(Sender: TObject);
begin
SendHTTP('http://teremok.ru/menu/dobavki_v_bliny_i_kashi/mayonez/');
end;
Информация из снифера
Код:
Первый запрос============================================
GET /menu/dobavki_v_bliny_i_kashi/mayonez/ HTTP/1.1
Host: teremok.ru
Keep-Alive: 300
Connection: keep-alive
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.89 Safari/537.36 OPR/49.0.2725.47

HTTP/1.1 200 OK
Date: Tue, 19 Dec 2017 14:27:17 GMT
Content-Type: text/html; charset=UTF-8
Transfer-Encoding: chunked
Connection: keep-alive
Keep-Alive: timeout=5
Vary: Accept-Encoding
Server: Apache
Set-Cookie: TEREMOK_CURRENT_CITY=spb; expires=Fri, 14-Dec-2018 14:27:17 GMT; path=/; domain=teremok.ru
P3P: policyref="/bitrix/p3p.xml", CP="NON DSP COR CUR ADM DEV PSA PSD OUR UNR BUS UNI COM NAV INT DEM STA"
X-Powered-CMS: Bitrix Site Manager (37718487132505ad0f9737903813b9fe)
Set-Cookie: PHPSESSID=php9dkd9dmj9aa624u15k12411; path=/; domain=teremok.ru; HttpOnly
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Set-Cookie: TEREMOK_IS_MOBILE_VERSION=N; expires=Fri, 14-Dec-2018 14:27:17 GMT; path=/; domain=teremok.ru

Второй запрос============================================================
POST /menu/dobavki_v_bliny_i_kashi/mayonez/ HTTP/1.1
Host: teremok.ru
Keep-Alive: 300
Connection: keep-alive
Cookie: TEREMOK_CURRENT_CITY=msk; PHPSESSID=1rtsjkg7ldvf8tg9l8f015ksl3; TEREMOK_IS_MOBILE_VERSION=N
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.89 Safari/537.36 OPR/49.0.2725.47
Content-Type: text/html; charset=UTF-8
Content-Length: 11

addr_id=603

HTTP/1.1 200 OK
Date: Tue, 19 Dec 2017 14:33:31 GMT
Content-Type: text/html; charset=UTF-8
Transfer-Encoding: chunked
Connection: keep-alive
Keep-Alive: timeout=5
Vary: Accept-Encoding
Server: Apache
P3P: policyref="/bitrix/p3p.xml", CP="NON DSP COR CUR ADM DEV PSA PSD OUR UNR BUS UNI COM NAV INT DEM STA"
X-Powered-CMS: Bitrix Site Manager (37718487132505ad0f9737903813b9fe)
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache

Третий запрос=============================================================
GET /menu/dobavki_v_bliny_i_kashi/mayonez/ HTTP/1.1
Host: teremok.ru
Keep-Alive: 300
Connection: keep-alive
Cookie: TEREMOK_CURRENT_CITY=msk; PHPSESSID=1rtsjkg7ldvf8tg9l8f015ksl3; TEREMOK_IS_MOBILE_VERSION=N
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.89 Safari/537.36 OPR/49.0.2725.47
Content-Type: text/html; charset=UTF-8
Content-Length: 88698

HTTP/1.1 200 OK
Date: Tue, 19 Dec 2017 14:33:32 GMT
Content-Type: text/html; charset=UTF-8
Transfer-Encoding: chunked
Connection: keep-alive
Keep-Alive: timeout=5
Vary: Accept-Encoding
Server: Apache
P3P: policyref="/bitrix/p3p.xml", CP="NON DSP COR CUR ADM DEV PSA PSD OUR UNR BUS UNI COM NAV INT DEM STA"
X-Powered-CMS: Bitrix Site Manager (37718487132505ad0f9737903813b9fe)
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Но цены нет)

Последний раз редактировалось Aliens_wolfs; 19.12.2017 в 18:07.
Aliens_wolfs вне форума Ответить с цитированием
Старый 19.12.2017, 18:19   #65
Aliens_wolfs
Форумчанин
 
Регистрация: 16.12.2009
Сообщений: 902
По умолчанию

А вот с браузером который работает

Код:
GET /menu/dobavki_v_bliny_i_kashi/mayonez/ HTTP/1.1
Accept: application/x-ms-application, image/jpeg, application/xaml+xml, image/gif, image/pjpeg, application/x-ms-xbap, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*
Accept-Language: ru-RU
User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E)
Accept-Encoding: gzip, deflate
Host: teremok.ru
Connection: Keep-Alive


HTTP/1.1 200 OK
Date: Tue, 19 Dec 2017 15:12:32 GMT
Content-Type: text/html; charset=UTF-8
Transfer-Encoding: chunked
Connection: keep-alive
Keep-Alive: timeout=5
Server: Apache
Set-Cookie: TEREMOK_CURRENT_CITY=spb; expires=Fri, 14-Dec-2018 15:12:31 GMT; path=/; domain=teremok.ru
P3P: policyref="/bitrix/p3p.xml", CP="NON DSP COR CUR ADM DEV PSA PSD OUR UNR BUS UNI COM NAV INT DEM STA"
X-Powered-CMS: Bitrix Site Manager (37718487132505ad0f9737903813b9fe)
Set-Cookie: PHPSESSID=vv94bfoqt35165hqmdl3qargi3; path=/; domain=teremok.ru; HttpOnly
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Set-Cookie: TEREMOK_IS_MOBILE_VERSION=N; expires=Fri, 14-Dec-2018 15:12:31 GMT; path=/; domain=teremok.ru
Content-Encoding: gzip

POST /menu/dobavki_v_bliny_i_kashi/mayonez/ HTTP/1.1
x-requested-with: XMLHttpRequest
Accept-Language: ru
Referer: http://teremok.ru/menu/dobavki_v_bliny_i_kashi/mayonez/
Accept: */*
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E)
Host: teremok.ru
Content-Length: 11
Connection: Keep-Alive
Cache-Control: no-cache
Cookie: PHPSESSID=vv94bfoqt35165hqmdl3qargi3; TEREMOK_IS_MOBILE_VERSION=N; _ga=GA1.2.1701669033.1513692890; _gid=GA1.2.683324637.1513692890; _gat=1; _ym_uid=1513692890291256528; _ym_isad=2; TEREMOK_CURRENT_CITY=msk; tmr_detect=0%7C1513692901190

addr_id=603
HTTP/1.1 200 OK
Date: Tue, 19 Dec 2017 15:12:51 GMT
Content-Type: text/html; charset=UTF-8
Transfer-Encoding: chunked
Connection: keep-alive
Keep-Alive: timeout=5
Server: Apache
P3P: policyref="/bitrix/p3p.xml", CP="NON DSP COR CUR ADM DEV PSA PSD OUR UNR BUS UNI COM NAV INT DEM STA"
X-Powered-CMS: Bitrix Site Manager (37718487132505ad0f9737903813b9fe)
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Content-Encoding: gzip
Aliens_wolfs вне форума Ответить с цитированием
Старый 19.12.2017, 18:22   #66
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Попробуйте сделать запрос для смены на МСК, может он и в сессии на сервере хранится, а не просто в куках.

И не меняйте PHPSESSID, вообще не надо его трогать.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 19.12.2017, 18:25   #67
Aliens_wolfs
Форумчанин
 
Регистрация: 16.12.2009
Сообщений: 902
По умолчанию

Цитата:
Попробуйте сделать запрос для смены на МСК, может он и в сессии на сервере хранится, а не просто в куках.
Сейчас попробую, я кстати тоже думал об этом что нужно запрос на смену города
Нашел ссылку на смену города http://teremok.ru/set_sity.php?city=msk

Ship_1 попробуйте код из поста #64 может у вас он отработает
Referer раскомментируйте

Последний раз редактировалось Aliens_wolfs; 19.12.2017 в 18:40.
Aliens_wolfs вне форума Ответить с цитированием
Старый 19.12.2017, 18:39   #68
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Мой скрипт кстати создает такие запросы, так что можно не параноить со всеми подряд заголовками:
Код:
GET http://teremok.ru/menu/bliny_sytnye/blin_dvoynoy_s_vetchinoy_i_syrom/ HTTP/1.1
Host: teremok.ru
User-Agent: python-requests/2.18.4
Accept-Encoding: gzip, deflate
Connection: keep-alive
Accept: */*
Код:
POST http://teremok.ru/menu/bliny_sytnye/blin_dvoynoy_s_vetchinoy_i_syrom/ HTTP/1.1
Host: teremok.ru
User-Agent: python-requests/2.18.4
Accept-Encoding: gzip, deflate
Connection: keep-alive
Accept: */*
Cookie: PHPSESSID=t8h0e86rsu8p9lukn6ga23not2; TEREMOK_CURRENT_CITY=msk; TEREMOK_IS_MOBILE_VERSION=N
Content-Length: 11
Content-Type: application/x-www-form-urlencoded

addr_id=582
Код:
GET http://teremok.ru/menu/bliny_sytnye/blin_dvoynoy_s_vetchinoy_i_syrom/ HTTP/1.1
Host: teremok.ru
User-Agent: python-requests/2.18.4
Accept-Encoding: gzip, deflate
Connection: keep-alive
Accept: */*
Cookie: PHPSESSID=t8h0e86rsu8p9lukn6ga23not2; TEREMOK_CURRENT_CITY=msk; TEREMOK_IS_MOBILE_VERSION=N
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 19.12.2017, 19:39   #69
Aliens_wolfs
Форумчанин
 
Регистрация: 16.12.2009
Сообщений: 902
По умолчанию

Да вижу в ваших запросах все просто без лишних заголовков, смена языка мне не помогло
Хочу попробовать на IdHTTP сделать

Заработало на IdHTTP нужно было сразу на нем делать)
Код:
procedure SendIdHTTP(URL: String);
var
IdHTTP: TIdHTTP;
DocData: TStringStream;
param: TStringList;
begin
IdHTTP:= TIdHTTP.Create(nil);
DocData:=TStringStream.Create('');
param:= TStringList.Create;
try
 IdHTTP.Request.UserAgent:='Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 '+
 '(KHTML, like Gecko) Chrome/62.0.3202.89 Safari/537.36 OPR/49.0.2725.47';
// Запрос на смену города и получения Сookies
IdHTTP.Get('http://teremok.ru/set_sity.php?city=msk', nil);
//Если вам не нужно менять город тогда просто сделайте запрос ниже
//IdHTTP.Get(URL, nil);
//делаем Post запрос уже c Cookie полученными от сервера
//заполняем тело документа для отправки
param.Add('addr_id=603');
IdHTTP.Post(URL, param);
//Далее пытаемся загрузить страницу с ценой
IdHTTP.Get(URL, DocData);

DocData.Position:= 0;
Form1.Memo1.Lines.LoadFromStream(DocData);
Form1.Memo1.Lines.SaveToFile('D:\terem_result1.html');
Form1.Memo1.Lines.Text:= Utf8ToAnsi(Form1.Memo1.Lines.Text);

finally
param.Free;
IdHTTP.Free;
DocData.Free
end;

end;

procedure TForm1.Button2Click(Sender: TObject);
begin
SendIdHTTP('http://teremok.ru/menu/dobavki_v_bliny_i_kashi/mayonez/');
end;
Заметил что httpsend все данные идут в httpsend.Headers поэтому пытался его чистить но видимо где то в запросах еще нужно кое что очищать, поэтому и задумался не в нем ли проблема, правильно ли я его очищаю.
После этих мучений делаю вывод что httpsend для многоразовых запросов без уничтожения его на запросах проблематично работает.

Последний раз редактировалось Aliens_wolfs; 19.12.2017 в 20:40.
Aliens_wolfs вне форума Ответить с цитированием
Старый 19.12.2017, 20:18   #70
Aliens_wolfs
Форумчанин
 
Регистрация: 16.12.2009
Сообщений: 902
По умолчанию

Заработало на IdHTTP код выше)
Alex11223 спасибо за советы и за терпение)
Было познавательно и интересно)

Последний раз редактировалось Aliens_wolfs; 19.12.2017 в 20:42.
Aliens_wolfs вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как запросить значение ячейки конкретной строки в листе Excel через запрос? intersk Microsoft Office Access 0 27.03.2015 21:01
как скопировать весь сайт включая все что подключается в js goluzov HTML и CSS 3 17.11.2011 18:14
Как запросить логин с которым пользователь входит в комп? Dorvir Microsoft Office Excel 2 18.06.2008 13:09
сайт в FireFox выглядит на 5+ , а вот в Explorer как не знаю что Мышь в полоску HTML и CSS 4 24.10.2007 18:43