Форум программистов, компьютерный форум, киберфорум
Python: Web
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/25: Рейтинг темы: голосов - 25, средняя оценка - 4.56
0 / 0 / 0
Регистрация: 03.05.2013
Сообщений: 78

Авторизация с использованием post запроса на сайте

26.03.2018, 22:30. Показов 5156. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Моя первая попытка авторизации на сайте.


Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import requests
 
def autoriz():
    session = requests.Session()
    url= 'https://zcoin.miningpoolhub.com/index.php?page=login'
 
    data= {'username':'qwerr19942017@gmail.com','password':'Overlord'}
 
    print(requests.get(url).text)
    print("-------------------------------------------")
    print(requests.post(url,data=data).text)
 
def main():
    autoriz()
 
if __name__ == '__main__':
    main()


Для проверки, я ожидал что в ответе с get запроса я найду "username",а с post запроса какой нибудь текст с сайта, но в место этого пришло что-то непонятно.



HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
<!DOCTYPE HTML>
<html lang="en-US">
<head>
  <meta charset="UTF-8" />
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
  <meta http-equiv="X-UA-Compatible" content="IE=Edge,chrome=1" />
  <meta name="robots" content="noindex, nofollow" />
  <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1" />
  <title>Just a moment...</title>
  <style type="text/css">
    html, body {width: 100%; height: 100%; margin: 0; padding: 0;}
    body {background-color: #ffffff; font-family: Helvetica, Arial, sans-serif; font-size: 100%;}
    h1 {font-size: 1.5em; color: #404040; text-align: center;}
    p {font-size: 1em; color: #404040; text-align: center; margin: 10px 0 0 0;}
    #spinner {margin: 0 auto 30px auto; display: block;}
    .attribution {margin-top: 20px;}
    @-webkit-keyframes bubbles { 33%: { -webkit-transform: translateY(10px); transform: translateY(10px); } 66% { -webkit-transform: translateY(-10px); transform: translateY(-10px); } 100% { -webkit-transform: translateY(0); transform: translateY(0); } }
    @keyframes bubbles { 33%: { -webkit-transform: translateY(10px); transform: translateY(10px); } 66% { -webkit-transform: translateY(-10px); transform: translateY(-10px); } 100% { -webkit-transform: translateY(0); transform: translateY(0); } }
    .bubbles { background-color: #404040; width:15px; height: 15px; margin:2px; border-radius:100%; -webkit-animation:bubbles 0.6s 0.07s infinite ease-in-out; animation:bubbles 0.6s 0.07s infinite ease-in-out; -webkit-animation-fill-mode:both; animation-fill-mode:both; display:inline-block; }
  </style>
 
    <script type="text/javascript">
  //<![CDATA[
  (function(){
    var a = function() {try{return !!window.addEventListener} catch(e) {return !1} },
    b = function(b, c) {a() ? document.addEventListener("DOMContentLoaded", b, c) : document.attachEvent("onreadystatechange", b)};
    b(function(){
      var a = document.getElementById('cf-content');a.style.display = 'block';
      setTimeout(function(){
        var s,t,o,p,b,r,e,a,k,i,n,g,f, tsBuCVO={"auQlMgNig":!+[]+!![]};
        t = document.createElement('div');
        t.innerHTML="<a href='/'>x</a>";
        t = t.firstChild.href;r = t.match(/https?:\/\//)[0];
        t = t.substr(r.length); t = t.substr(0,t.length-1);
        a = document.getElementById('jschl-answer');
        f = document.getElementById('challenge-form');
        ;tsBuCVO.auQlMgNig*=!+[]+!![];tsBuCVO.auQlMgNig-=+((!+[]+!![]+!![]+[])+(+!![]));tsBuCVO.auQlMgNig-=+((+!![]+[])+(!+[]+!![]+!![]+!![]+!![]+!![]+!![]+!![]));a.value = parseInt(tsBuCVO.auQlMgNig, 10) + t.length; '; 121'
        f.action += location.hash;
        f.submit();
      }, 4000);
    }, false);
  })();
  //]]>
</script>
 
 
</head>
<body>
  <table width="100%" height="100%" cellpadding="20">
    <tr>
      <td align="center" valign="middle">
          <div class="cf-browser-verification cf-im-under-attack">
  <noscript><h1 data-translate="turn_on_js" style="color:#bd2426;">Please turn JavaScript on and reload the page.</h1></noscript>
  <div id="cf-content" style="display:none">
    
    <div>
      <div class="bubbles"></div>
      <div class="bubbles"></div>
      <div class="bubbles"></div>
    </div>
    <h1><span data-translate="checking_browser">Checking your browser before accessing</span> miningpoolhub.com.</h1>
    
    <p data-translate="process_is_automatic">This process is automatic. Your browser will redirect to your requested content shortly.</p>
    <p data-translate="allow_5_secs">Please allow up to 5 seconds&hellip;</p>
  </div>
   
  <form id="challenge-form" action="/cdn-cgi/l/chk_jschl" method="get">
    <input type="hidden" name="jschl_vc" value="23d57e1ef240a54d975a0d46b650077e"/>
    <input type="hidden" name="pass" value="1522076628.61-kSxsCArg94"/>
    <input type="hidden" id="jschl-answer" name="jschl_answer"/>
  </form>
</div>
 
          
          <div class="attribution">
            <a href="https://www.cloudflare.com/5xx-error-landing?utm_source=iuam" target="_blank" style="font-size: 12px;">DDoS protection by Cloudflare</a>
            <br>
            Ray ID: 401a8177c9422579
          </div>
      </td>
     
    </tr>
  </table>
</body>
</html>
 
-------------------------------------------
<!DOCTYPE HTML>
<html lang="en-US">
<head>
  <meta charset="UTF-8" />
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
  <meta http-equiv="X-UA-Compatible" content="IE=Edge,chrome=1" />
  <meta name="robots" content="noindex, nofollow" />
  <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1" />
  <title>Just a moment...</title>
  <style type="text/css">
    html, body {width: 100%; height: 100%; margin: 0; padding: 0;}
    body {background-color: #ffffff; font-family: Helvetica, Arial, sans-serif; font-size: 100%;}
    h1 {font-size: 1.5em; color: #404040; text-align: center;}
    p {font-size: 1em; color: #404040; text-align: center; margin: 10px 0 0 0;}
    #spinner {margin: 0 auto 30px auto; display: block;}
    .attribution {margin-top: 20px;}
    @-webkit-keyframes bubbles { 33%: { -webkit-transform: translateY(10px); transform: translateY(10px); } 66% { -webkit-transform: translateY(-10px); transform: translateY(-10px); } 100% { -webkit-transform: translateY(0); transform: translateY(0); } }
    @keyframes bubbles { 33%: { -webkit-transform: translateY(10px); transform: translateY(10px); } 66% { -webkit-transform: translateY(-10px); transform: translateY(-10px); } 100% { -webkit-transform: translateY(0); transform: translateY(0); } }
    .bubbles { background-color: #404040; width:15px; height: 15px; margin:2px; border-radius:100%; -webkit-animation:bubbles 0.6s 0.07s infinite ease-in-out; animation:bubbles 0.6s 0.07s infinite ease-in-out; -webkit-animation-fill-mode:both; animation-fill-mode:both; display:inline-block; }
  </style>
 
    <script type="text/javascript">
  //<![CDATA[
  (function(){
    var a = function() {try{return !!window.addEventListener} catch(e) {return !1} },
    b = function(b, c) {a() ? document.addEventListener("DOMContentLoaded", b, c) : document.attachEvent("onreadystatechange", b)};
    b(function(){
      var a = document.getElementById('cf-content');a.style.display = 'block';
      setTimeout(function(){
        var s,t,o,p,b,r,e,a,k,i,n,g,f, aaMRcfi={"XX":+((!+[]+!![]+[])+(!+[]+!![]+!![]+!![]+!![]+!![]+!![]))};
        t = document.createElement('div');
        t.innerHTML="<a href='/'>x</a>";
        t = t.firstChild.href;r = t.match(/https?:\/\//)[0];
        t = t.substr(r.length); t = t.substr(0,t.length-1);
        a = document.getElementById('jschl-answer');
        f = document.getElementById('challenge-form');
        ;aaMRcfi.XX*=+((!+[]+!![]+!![]+!![]+[])+(!+[]+!![]+!![]+!![]+!![]));aaMRcfi.XX+=+((!+[]+!![]+!![]+[])+(!+[]+!![]+!![]));a.value = parseInt(aaMRcfi.XX, 10) + t.length; '; 121'
        f.action += location.hash;
        f.submit();
      }, 4000);
    }, false);
  })();
  //]]>
</script>
 
 
</head>
<body>
  <table width="100%" height="100%" cellpadding="20">
    <tr>
      <td align="center" valign="middle">
          <div class="cf-browser-verification cf-im-under-attack">
  <noscript><h1 data-translate="turn_on_js" style="color:#bd2426;">Please turn JavaScript on and reload the page.</h1></noscript>
  <div id="cf-content" style="display:none">
    
    <div>
      <div class="bubbles"></div>
      <div class="bubbles"></div>
      <div class="bubbles"></div>
    </div>
    <h1><span data-translate="checking_browser">Checking your browser before accessing</span> miningpoolhub.com.</h1>
    
    <p data-translate="process_is_automatic">This process is automatic. Your browser will redirect to your requested content shortly.</p>
    <p data-translate="allow_5_secs">Please allow up to 5 seconds&hellip;</p>
  </div>
   
  <form id="challenge-form" action="/cdn-cgi/l/chk_jschl" method="get">
    <input type="hidden" name="jschl_vc" value="bd40a88586ca70ed99e08b989a59bd84"/>
    <input type="hidden" name="pass" value="1522076628.724-bJx7JZVuiU"/>
    <input type="hidden" id="jschl-answer" name="jschl_answer"/>
  </form>
</div>
 
          
          <div class="attribution">
            <a href="https://www.cloudflare.com/5xx-error-landing?utm_source=iuam" target="_blank" style="font-size: 12px;">DDoS protection by Cloudflare</a>
            <br>
            Ray ID: 401a81788af22513
          </div>
      </td>
     
    </tr>
  </table>
</body>
</html>
Как правильно авторизироваться?
Миниатюры
Авторизация с  использованием post запроса на сайте  
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
26.03.2018, 22:30
Ответы с готовыми решениями:

Авторизация на сайте посредством Post запроса
Авторизация на сайте по средствам Post запроса На сайте есть форма входа: &lt;form action=&quot;site.com/login.php&quot;...

Авторизация на сайте ппри помощи post-запроса
На сайте есть форма входа: &lt;td class=&quot;bc&quot;&gt;&lt;table width=&quot;100%&quot; border=&quot;0&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot;&gt; &lt;tr&gt;&lt;td...

Авторизация на сайте по средствам POST запроса. Как расшифровать gzip ответ?
Всем привет, кто может мне помочь или кто тоже столкнулся с похожей проблемой! Проще говоря решил я сделать программу, которая будет...

10
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
26.03.2018, 23:16
Если забыть про то, что вы все равно делаете неверную попытку авторизации - не передаете скрытые поля, то в любом случае на этом сайте стоит защита от автоматических запросов: DDoS protection by Cloudflare. Это вы могли и сами увидеть в том html, который присылает сервер. И она весьма затрудняет попытки автовходов - моя попытка (с передачей всех скрытых полей) тоже не удалась.

Добавлено через 4 минуты
Тут нужно анализировать присылаемую страничку и пытаться понять, что сделал бы настоящий браузер получив ее.

Добавлено через 1 минуту
P.S. Правильные заголовки, увы, не спасают.
1
1741 / 913 / 480
Регистрация: 05.12.2013
Сообщений: 3,074
26.03.2018, 23:27
Можно попробовать headless-броузеры или через selenium отправлять
1
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
27.03.2018, 00:06
ТабуретY,
Ну я тоже к этой мысли пришел - защита Cloudflare использует скрипт, который заставляет браузер автоматически через 5 секунд редиректиться на нужную страницу. Но из python'а (без вирт. браузера) мы этот скрипт никак не выполним... Разве что разобрать его алгоритм -
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
(function(){
    var a = function() {try{return !!window.addEventListener} catch(e) {return !1} },
    b = function(b, c) {a() ? document.addEventListener("DOMContentLoaded", b, c) : document.attachEvent("onreadystatechange", b)};
    b(function(){
      var a = document.getElementById('cf-content');a.style.display = 'block';
      setTimeout(function(){
        var s,t,o,p,b,r,e,a,k,i,n,g,f, gVfRDuZ={"nQasjZJwiE":!+[]+!![]};
        t = document.createElement('div');
        t.innerHTML="<a href='/'>x</a>";
        t = t.firstChild.href;r = t.match(/https?:\/\//)[0];
        t = t.substr(r.length); t = t.substr(0,t.length-1);
        a = document.getElementById('jschl-answer');
        f = document.getElementById('challenge-form');
        ;gVfRDuZ.nQasjZJwiE*=+((!+[]+!![]+!![]+[])+(!+[]+!![]+!![]+!![]+!![]+!![]+!![]+!![]+!![]));gVfRDuZ.nQasjZJwiE*=+((!+[]+!![]+[])+(!+[]+!![]+!![]));gVfRDuZ.nQasjZJwiE+=+((!+[]+!![]+!![]+[])+(!+[]+!![]+!![]+!![]+!![]+!![]+!![]));a.value = parseInt(gVfRDuZ.nQasjZJwiE, 10) + t.length; '; 121'
        f.action += location.hash;
        f.submit();
      }, 4000);
    }, false);
  })();
там как я понял какая-то хитрая ссылка формируется...

Добавлено через 19 минут
Хотя нет - ссылка тут известна:/cdn-cgi/l/chk_jschl (хост, наверное, https://www.cloudflare.com)
По этой ссылке отправляются значение формы challenge-form - методом get.
Единственно, нужно заполнить значение (атрибут value) скрытого
HTML5
1
<input type="hidden" id="jschl-answer" name="jschl_answer"/>
, для чего нужно заменить значение вот этого словаря-объекта
JavaScript
1
gVfRDuZ={"nQasjZJwiE":!+[]+!![]};
вот по этом алгоритму:
JavaScript
1
gVfRDuZ.nQasjZJwiE*=+((!+[]+!![]+!![]+[])+(!+[]+!![]+!![]+!![]+!![]+!![]+!![]+!![]+!![]));gVfRDuZ.nQasjZJwiE*=+((!+[]+!![]+[])+(!+[]+!![]+!![]));gVfRDuZ.nQasjZJwiE+=+((!+[]+!![]+!![]+[])+(!+[]+!![]+!![]+!![]+!![]+!![]+!![]));a.value = parseInt(gVfRDuZ.nQasjZJwiE, 10) + t.length; '; 121'
В общем, javascript'ы разобрались бы... Наверное
1
1741 / 913 / 480
Регистрация: 05.12.2013
Сообщений: 3,074
27.03.2018, 00:35
главное это f.action += location.hash; от адреса берется часть после #

Добавлено через 5 минут
Цитата Сообщение от Garry Galler Посмотреть сообщение
вот по этом алгоритму:
Вообще тут просто надо прогнать через консоль chrome

t - это url в виде название.домен
gVfRDuZ={"nQasjZJwiE":2};
gVfRDuZ.nQasjZJwiE*=39;
gVfRDuZ.nQasjZJwiE*=23;
gVfRDuZ.nQasjZJwiE+=37; и т.д.
1
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
27.03.2018, 00:41
ТабуретY,
Вот эти кортежи (!+[]+!![]+[]) каждый раз имеют разное число как пустых списков, так и операторов !! .
Поэтому значения будут каждый раз другими. Я синтаксис javascript плохо знаю, чтобы так с ходу понять как там вычисляется конечное число... Но, получается что для того, чтобы его вычислить - нужно сам скрипт сначала распарсить- и только потом конвертнуть в python формулу. Сложновато выходит...

Добавлено через 3 минуты
Имя словаря gVfRDuZ и его ключ также формируются случайным образом из набора символов.
1
║XLR8║
 Аватар для outoftime
1212 / 909 / 270
Регистрация: 25.07.2009
Сообщений: 4,360
Записей в блоге: 5
02.04.2018, 14:56
Посетитель, JWT для авторизации самое оно
0
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
02.04.2018, 16:31
outoftime,
Вы тему (в первом посте ТС) пробовали прочитать? Причем тут JSON Web Token? JWT используется для передачи данных авторизации в клиент-серверных приложениях. Замечу: cвоих клиент-серверных приложениях. А ТС пытается авторизоваться в чужом web-приложении. Если вы поняли о чем я.
0
║XLR8║
 Аватар для outoftime
1212 / 909 / 270
Регистрация: 25.07.2009
Сообщений: 4,360
Записей в блоге: 5
02.04.2018, 19:33
Garry Galler, тогда это похоже на scrapy

С другой, стороны Headless Browser будет куда удобнее, к примеру https://github.com/jeanphix/Ghost.py Ну или любой другой https://github.com/dhamaniasad/HeadlessBrowsers Какой из них подойдет сходу не вспомню, давно таких задач небыло.
0
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
02.04.2018, 19:48
Цитата Сообщение от outoftime Посмотреть сообщение
С другой, стороны Headless Browser будет куда удобнее
Ему это и так посоветовали сразу же: Selenium или PhantomJS. И, судя по его молчанию - задачу свою он давно решил с использованием этих инструментов.
---------------------------------------------
Мы же с ТабуретY просто рассуждали на тему "можно ли обойтись без вирт. браузеров". Чисто в познавательных целях - не предлагая ТС реализовать это.
1
║XLR8║
 Аватар для outoftime
1212 / 909 / 270
Регистрация: 25.07.2009
Сообщений: 4,360
Записей в блоге: 5
03.04.2018, 00:19
Цитата Сообщение от Garry Galler Посмотреть сообщение
PhantomJS
Maintainer сказал что у него времени нету на его поддержку около месяца назад. Не знаю нашли ли добровольцев, но я в ближайшее время точно от его использования воздержусь (legacy пахнет, не сейчас, но вскоре)

Цитата Сообщение от Garry Galler Посмотреть сообщение
Selenium
ИМХО, достаточно громоздкое решение, хотя и работает как молоток.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
03.04.2018, 00:19
Помогаю со студенческими работами здесь

Авторизация с использованием POST запроса в Google, для последующей загрузки файлов на Google Drive
Возникла необходимость авторизоваться в Google без использования библиотеки Google.Apis, используя только POST запрос. После авторизации...

Авторизация на сайте POST запросом
Добрый день уважаемые программисты, думаю что вам хоть краем уха, но знаком сайт Школа программиста Я хочу сделать автоматическую...

Авторизация на сайте POST+Cookie
Тема для тех, кто знаком с DevelStudio 3.0 Есть такой код: $ch = curl_init(); curl_setopt($ch, CURLOPT_URL,...

Авторизация на сайте (Post запрос)
Все привет. Помогите сделать авторизацию на сайт,3 день уже вожусь не хрена не получается. Private Sub Button1_Click(ByVal sender As...

Авторизация на сайте методом post
Всем привет! столкнулся с таким издевательством. Авторизуюсь на сайте log.Add('email='+edit1.Text); log.Add('password='+edit2.Text);...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга, Ты же видел моря и метели. Как сменялись короны и стяги, Как эпохи стрелою летели. - Этот мир — это крылья и горы, Снег и пламя, любовь и тревоги, И бескрайние. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru