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

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

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 26.04.2012, 12:03   #1
Arsenx777
Delphi, c++, php
Форумчанин
 
Аватар для Arsenx777
 
Регистрация: 14.03.2011
Сообщений: 288
По умолчанию Отправка GET и POST запроса через сокеты php

Добрый день, у меня задача такая: есть некий сайт на котором есть поиск по сайту, если ввести туду какое то искомое слово, то в ответ мы получим, то что искали, при этом при каждом поиске надо ввести каптчу(которую я распознал).

Кто мне может помочь? отозвитесь пожалуйста, буду очень благодарен!


Я не требую готового кода! Я уже все реализовал, тоесть через сокеты приоизвожу гет запрос, парсю оттуда каптчу, распознаю ее и потыюсь произвести пост запрос с собранными параметрами, но что то не получается получить ответ, не чего не приходит от сервера, я еще новичок в php наверное как обычно что то накосячил .

На самом деле там очень простой пост запрос буквально с 3-мя параметрами, только у меня не получается.

Код скину в личку)
Мудр тот, кто знает нужное, а не многое.

Arsenx777 вне форума Ответить с цитированием
Старый 26.04.2012, 14:17   #2
Arsenx777
Delphi, c++, php
Форумчанин
 
Аватар для Arsenx777
 
Регистрация: 14.03.2011
Сообщений: 288
По умолчанию

Мне кно нибудь поможет? Просто очень надо, у меня весь скрипт прокомментирован, там разобраться не больше минуты, просто я где то ошибку допустил но где не могу понять.
Мудр тот, кто знает нужное, а не многое.

Arsenx777 вне форума Ответить с цитированием
Старый 26.04.2012, 14:36   #3
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Цитата:
Сообщение от Arsenx777 Посмотреть сообщение
просто я где то ошибку допустил но где не могу понять.
Поиск ошибок и отладка
На любой запрос к серверу - сервер дает ответ, смотрите HTTP-заголовки.
Andkorol вне форума Ответить с цитированием
Старый 26.04.2012, 16:17   #4
Arsenx777
Delphi, c++, php
Форумчанин
 
Аватар для Arsenx777
 
Регистрация: 14.03.2011
Сообщений: 288
По умолчанию

Не получается, а Вы не можете помочь? Там весь скрипт из 30 строк примерно
Мудр тот, кто знает нужное, а не многое.

Arsenx777 вне форума Ответить с цитированием
Старый 26.04.2012, 16:23   #5
ADSoft
Старожил
 
Регистрация: 25.02.2007
Сообщений: 4,160
По умолчанию

ну ты его здесь приведи. раз небольшой... телепатов то нет
ADSoft вне форума Ответить с цитированием
Старый 26.04.2012, 17:05   #6
Arsenx777
Delphi, c++, php
Форумчанин
 
Аватар для Arsenx777
 
Регистрация: 14.03.2011
Сообщений: 288
По умолчанию

Ну ладно вот, код: Я ж написал что могу в личку кинуть, просто не хотел выкладывать, вдруг кто то из модераторов сайту увидет, и сменет каптчу)

Код:
<?php
	include 'Hack_Captcha.php';
	
			$hCapt = new hCAPTCHA(); // Создаю новый объект класса, для распознования каптчи
	
			$sock = fsockopen('sound.ka4ka.ru', 80, $err, $error, 30);
			if ($sock)
			{
				$req = "GET / HTTP/1.0\r\n" . 
					   "Host: sound.ka4ka.ru\r\n" . 
					   "Connection: Close\r\n\r\n";
				fwrite($sock, $req);
				$ot = "";
				while(!feof($sock))
				{
					$ot .=fgets($sock, 1014);
				}
				
				$all_html = iconv("UTF-8","Windows-1251",$ot); // Ответ от GET запроса
				
				$reg_ = preg_match('/code\.php\?r=(.+)"/iU',$all_html,$ot); // Парсю из ответа ссылку, на каптчу, т.к она постоянно изменяется
				$st = $ot[0];
				$st = substr($st,0, strlen($st)-1); // Убераю последный символ из полученной ссылки, так надо))
				
				if (strlen($st)>0) // Если на удалось спарсить ссылку, то
				{
					echo "$st";
					$respense = $hCapt->Rasp("http://sound.ka4ka.ru/" . $st); // Переменной $respense присваиваю ответ от функции Rasp спараметром: хост и спарсенноя нами ссылка каптчи,
												//а ответ получим 4-значное число, тоесть распознанная каптча
					echo "<br />";
					echo "$respense";
					
					
					if(strlen($respense)==4) // Если в переменной 4 символа, то каптча распознана ( 95% )
					{
// И тут у меня проблемы... Не знаю как правильно сформировать POST запрос
						
						$data = "act=letsgo&query".urlencode("guf")."&scode".urlencode("$respense")."&submit_button=Найти!"; // Параметры для передачи POST
						
						// Сам запрос
						$rq = "POST /index.php HTTP/1.1\r\n" . 
								"Host: sound.ka4ka.ru\r\n" . 
								"Content-type: application/x-www-form-urlencoded\r\n" . 
								"Content-length:".strlen($data)."\r\n" .
								"Accept:*/*\r\n" . 
								"User-agent:Opera 10.00\r\n" . 
								"Connection:Close\r\n\r\n";
								
						fwrite($sock, $rq);
						fwrite($sock, $data);
						$answ = "";
						
						//Получаю ответ
						while (!feof($sock))
						{
							$answ .= fgets($sock, 4096);
						}
						echo "$answ";
					}
				}
				
				fclose($sock);
			}
	
		// В чем при POST запросе у меня ошибка? как это исправить?
?>
За помошь буду благодарен, а то уже 2-ой день пытаюсь и не могу понять.
Мудр тот, кто знает нужное, а не многое.


Последний раз редактировалось Arsenx777; 26.04.2012 в 17:11.
Arsenx777 вне форума Ответить с цитированием
Старый 26.04.2012, 18:06   #7
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

На первый взгляд - пропущено 2 знака равенства в этой строке:
PHP код:
$data "act=letsgo&query".urlencode("guf")."&scode".urlencode("$respense")."&submit_button=Найти!"
Далее сказать что-либо сложно - т.к. после исправления этого скрипт выдает примерно следующее:
Цитата:
HTTP/1.1 302 Found Server: nginx/0.8.55 Date: Thu, 26 Apr 2012 13:57:02 GMT Content-Type: text/html;charset=utf-8; Connection: close X-Powered-By: PHP/5.1.6 Set-Cookie: PHPSESSID=jrjm5nnf4i21k6j9fjhhu7fo3 5; path=/ 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 Location: /index.php?mtext=error_code&query=guf&PHPSESSID=jrjm5nnf4i21k6 j9fjhhu7fo35 Content-Length: 0
error_code из-за каптчи - без вашего Hack_Captcha.php мне угадать её сложно.
Andkorol вне форума Ответить с цитированием
Старый 26.04.2012, 19:52   #8
Arsenx777
Delphi, c++, php
Форумчанин
 
Аватар для Arsenx777
 
Регистрация: 14.03.2011
Сообщений: 288
По умолчанию

Спасибо Вам большое, но че то всеравно не пашет, ответа некакого нету, кроме гет ответа.
Вот класс распознования каптчи, прошу не закидывать камнями) если это извращенный способ распознования, но я другово алгоритма еще не знаю, тут распознование происходит по эталонам(я эталоны представил в виде массива) - из 100 каптч распознается примерно 70-80
Мудр тот, кто знает нужное, а не многое.


Последний раз редактировалось Arsenx777; 26.04.2012 в 19:56.
Arsenx777 вне форума Ответить с цитированием
Старый 26.04.2012, 19:54   #9
Arsenx777
Delphi, c++, php
Форумчанин
 
Аватар для Arsenx777
 
Регистрация: 14.03.2011
Сообщений: 288
По умолчанию

000000000000000000000
Мудр тот, кто знает нужное, а не многое.


Последний раз редактировалось Arsenx777; 27.04.2012 в 17:11.
Arsenx777 вне форума Ответить с цитированием
Старый 26.04.2012, 19:55   #10
Arsenx777
Delphi, c++, php
Форумчанин
 
Аватар для Arsenx777
 
Регистрация: 14.03.2011
Сообщений: 288
По умолчанию

0000000000000000000000
Мудр тот, кто знает нужное, а не многое.


Последний раз редактировалось Arsenx777; 27.04.2012 в 17:12.
Arsenx777 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Отправка post-запроса С# galogen13 C# (си шарп) 3 23.04.2012 15:46
Отправка post-запроса С# galogen13 Помощь студентам 3 22.04.2012 03:20
Отправка POST запроса через Delphi 2010KOHTEP Общие вопросы Delphi 1 26.05.2011 00:02
Отправка запроса POST CreatiK Общие вопросы .NET 4 06.12.2010 21:15
Отправка POST запроса S@fer Работа с сетью в Delphi 0 29.01.2009 13:33