Здравствуйте, есть сайт, тестовые данные логин - [email protected] ([email protected]) пароль - 123123123 Нужно получить код объекта Если получить код всей страницы, кода данного элемента там нет,он идет после тегов PHP: <div class="bgSlider"> А если получить код данного элемента, то можно увидеть PHP: <div class="bgSlider"><div class="Slider ui-draggable">Сдвиньте кнопку вправо</div></div><div class="clr"></div><div class=" TxtStatus dropError"></div><input name="xwfC9H-3k4wKT-Qxu4@qmgtaVBU@xsGu" value="Z@f4uYz" type="hidden"> Так вот, меня интересует как мне получить уникальный для каждой сессии, т.е. код элемента что выше, обычный гет тут не поможет, я уже не знаю в какую сторону биться PHP: <input name="xwfC9H-3k4wKT-Qxu4@qmgtaVBU@xsGu" value="Z@f4uYz" type="hidden"> Будьте любезны помочь
HTML: <div class="QapTcha"></div> вот твоя капча, которая обрабатывается жс HTML: <!-- Javascripts ================================================== --> <!-- Placed at the end of the document so the pages load faster --> <script src="/assets/application-cef5607ca5048b053bd4464f8a569a24.js" type="text/javascript"></script> <script type="text/javascript"> showVoteFields = function () { $('.vote-fields').show(); }; $('.QapTcha').QapTcha({ autoSubmit:false, autoRevert:true, PHPfile:'/votes/quaptcha.json' }); $('#vote_loading').remove(); var a1 = 'l'; var an = 'wb'; var at9 = 'M'; var agwa = 'ZV'; var azp = 'x'; var a9 = 'M2'; var a36c = 'jdn'; var ar = 'KK'; var a2v4 = 'E'; var ann2 = 'ba'; var aj7x = '15'; var ak = 'EcZ'; var as = ann2 + at9; var aa8 = a2v4 + ann2; var ay35 = a2v4 + ar; var aft3 = aj7x + ann2; var aim = at9 + as; var arpk = agwa + a9; var ag = ay35 + ay35; var aosk = arpk + a2v4; var al = ag + ar; var a142 = ag + aa8; var aiq = a36c + al; var a5 = a36c + ag; var apr9 = at9 + arpk; var adq = ay35 + a5; var afbq = a1 + a36c; var cache_val = ar + an + a36c + 'M' + 'EKKEKK' + ar + ay35 + as + aosk; $('#server_cache').val(cache_val); function validateForm(event){ return false; //event.preventDefault(); } $('#resolution').val(screen.width + 'x' + screen.height); $('#check_vote_form').click(function () { $.get('http://la2.mmotop.ru/servers/4541/votes/check.js', { charname: $('#vote_' + "w1y4v4").val(), world_id: $(".worlds-table input:checked").val() }); return false; }); </script>
https://github.com/alpixel/QapTcha/blob/master/jquery/QapTcha.jquery.js - вот тебе код капчи самой. http://la2.mmotop.ru/votes/quaptcha.json - от тебе файл ... вот его походу код https://github.com/alpixel/QapTcha/blob/master/php/Qaptcha.jquery.php ща проверим. Code: <form action="http://la2.mmotop.ru/votes/quaptcha.json" method="POST"> <input type="hidden" name="action" value="qaptcha"> <input type="hidden" name="qaptcha_key" value="garik"> <input type="submit"> </form> {"error":false} хех В общем что бы пройти проверку капчи ты можешь сам генерировать для нее ключ отправив предварительно POST запрос на сервер со своей сессией (идентификатор сессии передается в cookie). 1. Грузишь страницу получаешь значения вот этой вот формы <form accept-charset="UTF-8" action="***" class="new_vote" id="new_vote" method="post"><div style="margin:0;padding:0;display:inline"><input name="utf8" type="hidden" value="***" /><input name="authenticity_token" type="hidden" value="***" /> и куки 2. Отправляешь POST запрос с параметрами action=qaptcha&qaptcha_key=123 на /votes/quaptcha.json со своими полученными куками - тем самым ты перезаписываешь ключ капчи. 3. Отправляешь POST запрос уже на action из первой формы. при этом важно лишь то что в запросе будет 123=1 - потому что проверка лишь на и существование переменной... ну ты понимаешь что 123 это и есть qaptcha_key Code: $myVar = $_SESSION['qaptcha_key']; if(isset($_POST[''.$myVar.'']) && empty($_POST[''.$myVar.''])) А для развития попробуй в проекте использовать это https://github.com/google/gumbo-parser
Gar|k, спасибо очень помог, капчу прошел, получаю error:false, но вот теперь проблема с последним запросом, который и производит голосование Code: [/B] [B]PostFinal:=TStringStream.Create(''); PostFinal.WriteString('utf8=%E2%9C%93'); PostFinal.WriteString('&authenticity_token='+token); PostFinal.WriteString('&123=1'); PostFinal.WriteString('&server_cache='); PostFinal.WriteString('&resolution='); PostFinal.WriteString('&vote[haql38]=o6opBa'); PostFinal.WriteString('&vote[6roofy]=5712'); HTTP.MimeType:='application/x-www-form-urlencoded'; HTTP.Document.LoadFromStream(PostFinal); HTTP.HTTPMethod('POST','http://la2.mmotop.ru/servers/4541/votes/new'); Form1.Memo1.Text:=HTTP.Headers.Text;[/B] В ответ на этот запрос с Headers приходит HTTP/1.1 404 Not Found Server: QRATOR Date: Sat, 10 Oct 2015 17:52:24 GMT Content-Type: text/html; charset=utf-8 Content-Length: 4248 Connection: close Status: 404 Not Found X-Request-Id: b6da48d9141473c909c594161bd67fa7 X-Runtime: 0.004871 X-Rack-Cache: invalidate, pass не могу разобраться почему, запрос составлен верно (
В том же Chrome есть инструменты разработчика. Включаешь переходишь на вкладку network делаешь действия на странице по голосованию и смотришь какие запросы с какими данными были сделаны... Повторяешь те же самые запросы программно. PROFIT В общем надо научится пользоваться снифферами, иначе никак. Например, https://www.wireshark.org/
Не нет, ошибочка вышла с постом, я нормально теперь передаю POST, была ошибка в странице на которую делал POST теперь все в норме Пост передаю но реакции не какой, через браузер потом смотрю, могу голосовать, значит не прошел ПОСТ запрос, и каждый снифер POSTDATA кнопки голосовать по своему отображает, самый здравый снифер которым пользовался был HTTP Debuger но почему то перестал работать.... им можно было и посмотреть что мой софт отправляет, и просто потом сравнить что не так, но повторюсь.. он не работает А вот сам мой пост запрос Code: //капча HTTP.Headers.Clear; PostQ:=TStringStream.Create(''); PostQ.WriteString('action=qaptcha'); PostQ.WriteString('&qaptcha_key=123'); HTTP.MimeType:='application/x-www-form-urlencoded'; HTTP.Document.LoadFromStream(PostQ); HTTP.HTTPMethod('POST','http://la2.mmotop.ru/votes/quaptcha.json'); //в ответ получаем {"error":false} следовательно прошли капчу // голосование PostFinal:=TStringStream.Create(''); PostFinal.WriteString('authenticity_token='+authenticity_token); PostFinal.WriteString('&resolution=1280x1024'); PostFinal.WriteString('&server_cache=MuErq91sIrq1bC91sIUVZlwkVZ1sIrq1sIrq1bC91sIrq1bC9'); // и вот это берется не пойму откуда, в исходнике страницы, тут пусто //PostFinal.WriteString('&session_secret=123'); PostFinal.WriteString('&utf8='+utf8); PostFinal.WriteString('&123=1'); PostFinal.WriteString('&'+votename2+'=5712'); PostFinal.WriteString('&'+votename+'='+Charname); HTTP.MimeType:='application/x-www-form-urlencoded'; HTTP.Document.LoadFromStream(PostFinal); HTTP.HTTPMethod('POST','http://la2.mmotop.ru'+act);