Приветствую, тру кодеры. Давно ничего не говнокодил, пришла тут идея одна, и мне понадобилось сделать проверку фото через гугл images.google.ru. Посниферил, вижу следующее: POSTDATA =-----------------------------3856678821789 Content-Disposition: form-data; name="image_url" -----------------------------3856678821789 Content-Disposition: form-data; name="encoded_image"; filename="tst.jpg" Content-Type: image/jpeg ÿØÿà и так, делаю сначала запрос на https://images.google.com/?gws_rd=ssl парсю 2 куки, NID и PREF, подставляю. Далее пытаюсь отправить пост, с картинкой: Code: TIdMultiPartFormDataStream *img_p = new TIdMultiPartFormDataStream; String type = "image/jpeg"; img_p->AddFormField("image_url", ""); img_p->AddFormField("encoded_image", ""); try{ img_p->AddFile("filename", "tst.jpg", type); } catch(...) {Memo1->Lines->Add("Ошибка файл не добавлен"); } http->Request->Referer="https://images.google.com/?gws_rd=ssl"; try{ http->Post("https://images.google.com/searchbyimage/upload", img_p); } catch (...) {} Memo1->Lines->Add(http->Response->RawHeaders->Text); delete img_p; Но в Location приходит короткий урл, совсем не тот который нужен что бы определить уникальность картинки. Он слишком короткий. Без кукисов точно такой же приходит, при переходе по нему попадаю на страницу с таким содержанием: "Поддерживаются только следующие форматы изображений: JPEG, GIF, PNG, BMP, TIFF или WebP." п.с.: пробовал в двух версиях билдера 6.0 и XE2, с разными libeay32.dll и ssleay32.dll все тоже самое. Так же подставлял все заголовки запроса, юзерагент, реферер и все что браузер отправлял, но ничего не изменилось. В общем перепробовал всё что мог. Если кому не жалко, подскажите что можно сделать... Спасибо, с уважением.
"Поддерживаются только следующие форматы изображений: JPEG, GIF, PNG, BMP, TIFF или WebP." - неправильную картинку отправляешь. Куки, реферер и т.д. не нужны. В запросе на "/searchbyimage/upload" обязательным является только поле encoded_image (Content-Type и filename поля любые) и заголовки Host, Content-Type, Content-Length. После редиректа на "/search?tbs=sbi..." нужен еще User-Agent.
Спасибо что не проигнорировали и рассказали о ньюансах. В общем как оказалось, с пост-параметрами накосячил, Code: img_p->AddFormField("encoded_image", ""); это поле я неправильно добавил, и это неправильно оформил Code: img_p->AddFile("filename", "tst.jpg", type); надо всего то было сделать: Code: img_p->AddFile("encoded_image", "tst.jpg", type); и правильный урл гугл сразу прислал Ещё интересно есть ли там каптча