✅ [Бесплатно] hCaptchaGnizer - решение hCaptcha на стероидах ⚡

Lord_Alfred

Client
Регистрация
09.10.2015
Сообщения
3 916
Благодарностей
3 866
Баллы
113

Rik-1

Новичок
Регистрация
18.03.2019
Сообщения
7
Благодарностей
0
Баллы
1
Lord_Alfred подскажи пожалуйста, возникла проблемка с разгадыванием hCaptcha по api https://rucaptcha.com/api-rucaptcha#solving_hcaptcha Дело в том что не проходит автосабмит. Как правильно его настроить? То что ты предлагаешь на первых страницах, оно здесь не работает. Что нужно изменить в коде страницы с капчей, а именно в сабмите, чтобы разгадать её?
 

Вложения

Lord_Alfred

Client
Регистрация
09.10.2015
Сообщения
3 916
Благодарностей
3 866
Баллы
113
Что нужно изменить в коде страницы с капчей, а именно в сабмите, чтобы разгадать её?
Посмотреть какие js-события вызываются при сабмите руками в обычном браузере. Делается это через Network панель в DevTools, там зайти в нужный запрос и открыть Initiator, чтоб понять в каком месте был вызван js.
 

Rik-1

Новичок
Регистрация
18.03.2019
Сообщения
7
Благодарностей
0
Баллы
1
Посмотреть какие js-события вызываются при сабмите руками в обычном браузере. Делается это через Network панель в DevTools, там зайти в нужный запрос и открыть Initiator, чтоб понять в каком месте был вызван js.
Я нашёл это место где вызывается яваскрипт, теперь что мне нужно сделать?
 

Lord_Alfred

Client
Регистрация
09.10.2015
Сообщения
3 916
Благодарностей
3 866
Баллы
113

Fobos

Client
Регистрация
05.10.2015
Сообщения
51
Благодарностей
5
Баллы
8
На сайте hCaptcha без кнопки сабмита, как такую капчу отправлять?

Если делать руками, то отправка происходит после нажатия кнопки верификации выбранного набора картинок.
Пробовал в PM(браузерный шаблон) нажимать на чекбокс с галочкой, кнопку верификации выбранного набора картинок, в Network панели во время клика ненашел никаких .js

На тестовой странице браузерный шаблон работает, но там кнопка в наличии.
 
Последнее редактирование:

Lord_Alfred

Client
Регистрация
09.10.2015
Сообщения
3 916
Благодарностей
3 866
Баллы
113
Универсального ответа скорее всего нет. Нужно искать функцию, которая вызывается из js после того как все картинки решены.
Клик по "галочке" не нужно делать в шаблоне, так можно только ухудшить ситуацию и токен может не подойти.
 

Fobos

Client
Регистрация
05.10.2015
Сообщения
51
Благодарностей
5
Баллы
8
Нужно искать функцию, которая вызывается из js после того как все картинки решены.
А каков принцип поиска, как искать id элемента при помощи которого происходит submit?

1) Открыл капчу руками, в network появилась запись https://assets.hcaptcha.com/captcha/challenge/grid/d5c2e9d/challenge.min.js , выбрал правильные картинки и нажал кнопку верификации, новых строк нет, значит сабмит в этом js? (До этого было еще несколько скриптов hcaptcha)
2) Ищу в коде что-то связанное с submit и по примеру из топика document.getElementById("challenge-form").submit(); подставляю значения (w.prototype.submit, prototype.submit, display-check), само собой не работает.

3) в Initiator нашел зеленую кнопку верификации, div class submit-background, button-submit, submit-text но это мало чего мне дало

/* https://hcaptcha.com/license challenge*/
var image_label_binary = function(t, e, i) {
"use strict";
function s() {
t.Extend.self(this, t.DomComponent, "challenge-prompt"),
this.state = {
visible: !1
},
this.$copy = this.createElement(".prompt-text"),
this.$block = this.createElement(".prompt-block")
}
function o() {
t.Extend.self(this, t.DomComponent, "challenge-report"),
this.width = 0,
this.height = 0,
this.state = {
visible: !1
},
this.$copy = this.createElement(".report-text"),
this.$copy.text("Please select an image to report."),
this.$bg = this.createElement(".report-bg")
}
t.Extend.proto(s, t.DomComponent),
s.prototype.style = function(t, i, s, o) {
var A = o ? 14 : 17;
this.css({
fontSize: A,
color: "#707070",
width: t,
height: i,
textAlign: s,
position: "absolute"
}),
this.$copy.css({
height: i,
verticalAlign: "middle",
display: "table-cell"
}),
this.$block.css({
position: "absolute",
top: i / 4,
left: 0,
zIndex: 5,
width: t,
height: i / 2,
backgroundColor: e.Color.grey.placeholder,
borderRadius: 4
})
}
,
s.prototype.setText = function(e) {
var i = t.Language.getBestTrans(e);
this.$copy.text(i),
this.$block.css({
opacity: 0
})
}
,
s.prototype.visible = function(t) {
this.state.visible = t,
this.css({
display: t ? "table" : "none"
})
}
,
t.Extend.proto(o, t.DomComponent),
o.prototype.style = function(t, e, i) {
var s = i ? 14 : 17;
this.css({
fontSize: s,
color: "#707070",
width: t,
height: e,
textAlign: "center",
position: "absolute",
top: 0
}),
this.$copy.css({
opacity: 1,
height: e,
verticalAlign: "middle",
display: "table-cell",
color: "#fff",
textAlign: "center",
zIndex: 5
}),
this.$bg.css({
opacity: this._visible ? 0 : 1,
position: "absolute",
top: 0,
left: 0,
zIndex: -1,
width: t,
height: e,
backgroundColor: "#EB5757",
borderRadius: 2
}),
this.height = e,
this.width = t
}
,
o.prototype.visible = function(t) {
this.state.visible = t,
this.css({
display: t ? "table" : "none"
})
}
;
var A = new Image(200,200);
function r() {
t.Extend.self(this, t.DomComponent, "loading-indicator"),
this.$icon = this.createElement(".icon")
}
function n() {
t.Extend.self(this, t.DomComponent, "example-image");
var e = this;
this.width = 0,
this.height = 0,
this.timer = null,
this._image = null,
this._visible = !1,
this.$image = this.createElement(".image"),
this.loader = this.initComponent(r, null),
this.loader.display(!1),
this.onDestroy = function() {
e.timer && (e.timer = clearTimeout(e.timer))
}
}
function h() {
t.Extend.self(this, t.DomComponent, "challenge-example"),
this.state = {
visible: !1
},
this.container = this.createElement(".example-wrapper")
}
function a() {
t.Extend.self(this, t.DomComponent, "challenge-header"),
this.$wapper = this.createElement(".header-wrapper"),
this.example = this.initComponent(h, null, this.$wapper),
this.prompt = this.initComponent(s, null, this.$wapper),
this.report = this.initComponent(o, null),
this.report.visible(!1)
}
A.src = "data:image/gif;base64,R0lGODlhyADIAPQZAPb29vX19e3t7fT09Orq6vLy8u7u7vv7++np6ezs7Ovr6+jo6O/v7/r6+vj4+Pf39/Pz8/n5+fDw8PHx8fz8/P39/efn5/7+/v///+bm5gAAAAAAAAAAAAAAAAAAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh/wtYTVAgRGF0YVhNUDw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDYuMC1jMDAyIDc5LjE2NDM1MiwgMjAyMC8wMS8zMC0xNTo1MDozOCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIDIxLjEgKE1hY2ludG9zaCkiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6RTkwREY1NTQ4MUJFMTFFQTlBREQ5NURDNTBBRjJEQzEiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6RTkwREY1NTU4MUJFMTFFQTlBREQ5NURDNTBBRjJEQzEiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpFOTBERjU1MjgxQkUxMUVBOUFERDk1REM1MEFGMkRDMSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpFOTBERjU1MzgxQkUxMUVBOUFERDk1REM1MEFGMkRDMSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PgH//v38+/r5+Pf29fTz8vHw7+7t7Ovq6ejn5uXk4+Lh4N/e3dzb2tnY19bV1NPS0dDPzs3My8rJyMfGxcTDwsHAv769vLu6ubi3trW0s7KxsK+urayrqqmop6alpKOioaCfnp2cm5qZmJeWlZSTkpGQj46NjIuKiYiHhoWEg4KBgH9+fXx7enl4d3Z1dHNycXBvbm1sa2ppaGdmZWRjYmFgX15dXFtaWVhXVlVUU1JRUE9OTUxLSklIR0ZFRENCQUA/Pj08Ozo5ODc2NTQzMjEwLy4tLCsqKSgnJiUkIyIhIB8eHRwbGhkYFxYVFBMSERAPDg0MCwoJCAcGBQQDAgEAACH5BAQDAP8AIf4ZT3B0aW1pemVkIHVzaW5nIGV6Z2lmLmNvbQAsAAAAAMgAyAAABf9gJo5kaZ5oqq5s675wLM90bd94ru987//AoHBILBqPyKRyyWw6n9CodEqtWq/YrHbL7Xq/4LB4TC6bz+i0es1uu9/wuHxOr9vv+Lx+z+/7/4CBgo_OEhYaHiImKi4yNjo+QkZKTlJWWl5iZmpucnZ6foKGio6SlpqeoqaqrrK2ur7CxsrO0tba3uLm6u7y9vr/AwcLDxMXGx8jJysvMzc7P0NHS09SpBhMQ2ddgCd3e3N8LUgAVGObn5wACWdfa7toE7AXv7/FLBgfo+vsGVRL0AOFR+ReQnr0jDvYp3IcgCo_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_OowVjQaI18C47urot81WkM3LciKIOECwPclNhwKXqJk7mLXGxfJ3F4KQcTRhkYOipeJ5ntXKwWaR7dPAkEEg7j6V16Xb42UeUPn5izU/nollv37hwhAAAh+QQFAwAIACwMAFIAsAAkAAAE/xDJSaugt+rNu/9gKI4kR0hn6Q0N1wxqLEsBYN/3rKtM7/c7hEM0DBoruGTyyJz8ns+mdEpTWpVUGXQbFSlasYYiO6pdzzlyaGHgursr3UEdQtsBdNB77/N8gwdjeRt3d4MbbHyKCy5HYIdVhYWQTouKlIMFkpuYlpeYdJuckJ6LSFNFmaKTpKV8oGSro3mupjRZMLSyrLq1exOPUsG4u5KZvr+wwsW8scivGbihzIahz8nKjtR2dATXr9lG29zW31zh2uNXveZQ6OLq62re7W7z0/FY5fU/74D5+ubx6zKMSUFUAJew4+dEmq6EeI4NZOAPHsRDE4EAQ0UqIaWJFVLT5fs4MKTFkSTbNRIHyoy6lvVMzNkRSNk4ZYnMxZkxMxs1dN/0HKwjyCczoG2QmSQmK6SrMESWRiIn1RbPoS+kIjmjVcO5JtEQhO1KlgcKEhEAACH5BAUDAAUALAwAUgCwACQAAAX/YCGOZFkwUmqubOu+sJgYchLfeF5atay3kMhhSCRCfsikYgJ4OJ9QRXKKWywN2Kx2MYUWv0SqmDXzmqPjNEmwbWt/AbAcrE6f78/6eObuZ3FCc4Jhekl4hw+FU36MNDAJDYOSQzaKN02IiJZVjZ0vkZOTmzCYmZqjLp2qjiuBoaKoLKamsUCrjbKvurUls7O8a7erJrq7wJC+s5W8wsMkZsWDwAPJvsfNziLRxrFL1cq1VtjOQduhR93f4N3j5OavtaXqp6jtzu/wsfO/9fbD+KHS7cu0bJM/TwwATmJQbyBBdgf9nFAoSYI+h4cgRmREcZBFVBgz9tvIseMchqMMq4TEw8ogSTfaTMoRuNJMQUsvYRaQOfNiTS8ac75xxXNIvJ9AgwqVUdTIUaR5lOYc0dRo_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_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_OOCNGfO9NM1da72dLc3d7fyeGIpb/X5WfQ6HnqgCm/7Wbv8GvjUQj27ob54u0j588KvoBfBhopeOUawjXbFPJgaPAgQokEGQp7mATjQooCNnJUNMKWFpP1KFKm4ujxo0qRF2mdZGXKn6+HKzAZ0dmpILOAlnZOs8cN3iI13FxVGxfuCZyBSwdGcyNGYc1TGIeBcepRKTKpoFrS/CfWk75a9Mq2yBFR7RQcNEIAACH5BAUDAAEALA0AUgCvACQAAAX/YCCOZGmeaKqurLkECAK3dG27ZHKnxeP8wOBuSITpTglCcUlT9CLQqFRRDFqtzKx2u00ApODwsXYtY7notNo0CLvDLad5HqSua+Nb/s6iv6UrXn6De3yGhyh/imA8g44OdoiSk4uVUYmPjpM5XZsjmZYnoIOepWptlqkDJaOapq9MgqqWea2ksLhDX7Opn7a3ucEscry0AU+/fohKa8yGyMWVx8nAfIWdh9TS2srC3pjRodx0hy/Wz+GpsuNX3+6s6dvsZeWGMujxitPzZ+f+fPkW7eMH5J3BgQHhEOx3x1xDfAndrFt48F3ENwgJLnuY7aLChQXrNUMEzWMBESAdXVR8R8xkJIorLZqEQgJmzG8TE+7hd9Mgqots5pm6NoQoxIBI2EXq6S5iI21GmeZCqqJlq6WvolYVRo3MKKlMf87a8Qgs2JyKtD6dc5MA0SQxrUo0+zDGDLN51I4IAQAh+QQFAwACACwMAFIAsAAkAAAF/6AgjmQpMFJqrmzrvnAsz/RsoEYNO1Hv+7qgcEgsrh68pLII+Dmfxqh0Sgwor1jd4MmFUr/g8AlLzsrKXa94za4h0fBHLE13tu94VnzveNX/QHmCd3x8LYWAfYOLYG+IcEeJkoyUURCPhiWSk5WdQpiZI02biZ6mNqChAqScp66HqXskrKWvtiaxsiK5gLe+q7xxu7S1v6/BwsDEf8a2yJAMy4AMzacGz2g30n8S1abR2GQo23Xd3p3g4Vfj5GnU55XX6uvK7WrwlPNXw/b3+Iv6ltTrF+gfI0f6RBEsaPBgwFkLezSsFFARv4UT8z2ESDAjxXm4MHp0qC6SvZEfsS/BIoeyk0oXLFu6DDZnmUxTCDGhYnXTWiotrXr6LMQkjdBmOQVOwfHu6LkbKGiEAAAh+QQFAwADACwMAFIArwAkAAAF/+AgjmQpkGeprmzrvisyEMQM33iu72wCRY2gcJjgGY+KlEqgODp3E8BjSq0iq8OsUPnser/gAXZM5QW0aG14zW6vyPAyDpiuC91QJD5HkMb/ADUudoR3e4eIMAqAjA9NLIWRDYmUlSJ9jYyCJXSShJYjXE+ilH6ZgCpnnpGgrW2njSarkqSutmawsSN/s1m3v0e5ujO9tMDHc8K6P8WsiI9t0HtRyrGdzXaJtV/ba6bVf2LYhcjlLeCNAuOF3dyHMofojOLrdeb3nPLh9dnv/vH64tDjp+Yfnk14AgokmAafw4EKq6hjqKWdF3gHEUUkA5HipIf3No7pSFFbRo0irW0w8xjEpBtpCVOW8cGyQRGQIWXuqonTYUoULC32bPWThCqGQ31GfIO0lVAcT9l8kweJX9KHmPQhzDfuKshF8mCmwoYs6pJjWZVtrdrL61VhUHhlMev2WCYnNO3c/LqNyVBqAt2FqmuDhg3CRkIAACH5BAUDAAoALAwAUgCwACQAAAT/UMlJKanq4s27/yAhamBpnp9ho_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_Ojpj+6M0Oat8KTh83369p/4hurtWyPQXySAd/oNJKjO4EGEZhQutCLRIRiIEStOLFDQ4kWMZzRO7OjRC8iQDTeIFiFZkkmOk4hSqpzAsiUOmBfAyVSpzSYTajiZzeTY0yesk8SGCvVJEyhIYDOT+kQWCyNUnldLikIIrNZIYKtaviIBseuNeWZFeLJIaCu8tGqjYUNm1iILb3BLyL2VN66/toWq9T3rbLDfbWPrxDPsNRvjw8ds3DSj87HevW0sX5ajue+Lzo9CAAAh+QQFAwAAACwMAFIAsAAkAAAF/yAgjmQpQpCprmzrvmQiJ3Bt3yoxy/iL/cBfb0gU6QqopNJAKDprhla0eAhar8/saslNar+xrnh4LVvBWrE6hXYy1mpbxUwPtodIePzOJxrqgEBTfS55enuEhYdrLoGOGIlSi3CRLIaTXSxzj4GVJpeYmZ6jIpyOpCOhlKhvqowlpo+srq+ohFWxp6O0tZUSvL25sr7Aa022fMK6xMWikQbNiMqdzNFcyHfTy4TWY9ho2tSJ3c59R+RLAOGAz+jX32nrdWzc7l7j9kvydPR9+Sjt/tHYZybgP3hfCJap5s6gPR0KsThEhxBMRCCeQJGrmPAipIz2QD4c4fHjxG7HOFw+wRWRVMNdIUlcnLVRpUWCyGq6pGhik7yc3Wy22fdNo6ui0aSsGwQUGEKjmGD4zMUR6iGhkagKVbX1KA6W4rAuwppqUpaCZEucU5MyLdNPbQCmfbFjrpQdbV2EAAA7",
t.Extend.proto(r, t.DomComponent),
r.prototype.style = function(t) {
var e = t ? 30 : 36;
this.css({
width: e,
height: e,
position: "absolute",
top: "50%",
left: "50%",
marginTop: -e / 2,
marginLeft: -e / 2
}),
this.$icon.css({
width: e,
height: e
}),
this.$icon.backgroundImage(A, e, e, {
contain: !0
})
}
,
r.prototype.display = function(t) {
this.css({
opacity: t ? 1 : 0
})
}
,
t.Extend.proto(n, t.DomComponent),
n.prototype.style = function(t, e, i) {
this.css({
width: t,
height: e,
borderRadius: 2,
right: 0,
top: 0,
position: "absolute",
backgroundColor: "#e6e6e6",
overflow: "hidden"
}),
this.loader.style(i),
this.loader.css({
zIndex: 1
}),
this.$image.css({
position: "absolute",
top: 0,
left: 0,
zIndex: 5
}),
null !== this._image && this.$image.backgroundImage(this._image, t, e, {
cover: !0,
center: !0
}),
this.width = t,
this.height = e
}
,
n.prototype.load = function(t) {
var e = this;
return this.timer = setTimeout(function() {
e.loader.display(!0)
}, 250),
i.Loader.image(t).then(function(t) {
e.timer && (e.timer = clearTimeout(e.timer)),
null !== e.dom && (e.loader.display(!1),
e._image = t,
e.$image.backgroundImage(e._image, e.height, e.height, {
cover: !0,
center: !0
}))
})
}
,
n.prototype.display = function(t) {
this._visible = t,
this.css({
opacity: t ? 1 : 0
})
}
,
t.Extend.proto(h, t.DomComponent),
h.prototype.style = function(t, e) {
var i = e ? 60 : 80;
1 === this.children.length && (t = i = e ? 65 : 90),
this.css({
width: t,
height: i,
position: "absolute",
right: 0
}),
this.container.css({
width: t,
height: i
});
for (var s = -1, o = (t - (this.children.length * i + 5 * (this.children.length - 1))) / 2; ++s < this.children.length; )
this.children.style(i, i, e),
this.children.css({
position: "absolute",
left: o + s * i + 5 * s
});
return {
width: t,
height: i
}
}
,
h.prototype.load = function(t) {
var e, i;
if (!1 === Array.isArray(t) && (t = [t]),
this.children.length > 0)
for (e = this.children.length; --e > -1; )
i = this.children[e],
this.children.splice(e, 1),
i.destroy();
e = -1;
for (var s = t.length > 3 ? 3 : t.length, o = []; ++e < s; )
i = this.initComponent(n, null, this.container),
o.push(i.load(t[e]));
return Promise.all(o)
}
,
h.prototype.visible = function(t) {
this.state.visible = t,
this.css({
display: t ? "block" : "none"
})
}
,
t.Extend.proto(a, t.DomComponent),
a.prototype.style = function(t, e, i) {
var s = "left"
, o = this.example.style(t, i)
, A = {
width: this.example.children.length > 1 && this.mobile ? 280 : t,
height: o.height + 2 * e
}
, r = t - o.width - 3 * e
, n = o.height;
return this.example.children.length > 1 ? (r = t - 2 * e,
n = i ? 50 : 60,
s = "center",
A.height += n + e,
this.example.css({
marginTop: n + e,
marginRight: 0
})) : this.example.css({
marginTop: 0,
marginRight: e
}),
this.prompt.style(r, n, s, i),
this.report.style(A.width, A.height, i),
this.css({
position: "relative",
display: "block",
width: A.width,
height: A.height,
marginBottom: e
}),
this.$wapper.css({
padding: e,
width: A.width - 2 * e,
height: A.height - 2 * e
}),
A
}
,
a.prototype.load = function(t, e) {
this.prompt.visible(!0),
this.prompt.setText(t),
this.example.load(e)
}
,
a.prototype.displayReport = function(t) {
this.prompt.visible(!t),
this.example.visible(!t),
this.report.visible(t)
}
;
var l = []
, p = null
, c = 0
, g = Object.create(null)
, m = Object.create(null)
, u = {
setup: function(t) {
g = Object.create(null),
l = [],
c = 0,
p = t;
for (var e = [], i = 0, s = 0; s < t.length; s++)
i += 1,
e.push(t),
i % 9 != 0 && i !== t.length || (l.push(e),
e = [])
},
getTotalSets: function() {
return l.length
},
getTotalTasks: function() {
return p.length
},
getServedCount: function() {
return c
},
getNextSet: function() {
var t = l[c];
return c += 1,
t
},
storeAnswers: function(t) {
for (var e in t)
g[e] = t[e]
},
getAnswers: function() {
return g
},
isComplete: function() {
return c === l.length
},
verifyAnswers: function() {
for (var t = p.length, e = !0, i = 0; i < t; i++) {
var s = p.task_key;
g || (e = !0)
}
return e
},
loadImages: function() {
m = Object.create(null);
for (var t = null, e = 0; e < p.length; e++)
t = p[e],
m[t.task_key] = i.Loader.image(t.datapoint_uri)
},
getImage: function(t) {
return m[t]
}
};
function d() {
t.Extend.self(this, t.DomComponent, "task-image");
var e = this;
this.key = null,
this.state = {
report: !1,
empty: !1,
active: !1,
locked: !1
},
this.timer = null,
this._crop = !1,
this._image = null,
this.$wrapper = this.createElement(".image-wrapper"),
this.$image = this.$wrapper.createElement(".image"),
this.$border = this.createElement(".border"),
this.loader = this.initComponent(r, null),
this.loader.display(!1),
this.setAttribute("tabindex", "-1"),
this.setAttribute("role", "button"),
this.setAttribute("aria-label", "Challenge Image"),
this.setAttribute("aria-pressed", !1),
this.onDestroy = function() {
e.timer && (e.timer = clearTimeout(e.timer))
}
}
function y(t, e) {
var i = {
center: !0
};
return t.width / t.height === 16 / 9 && !1 !== e ? i.cover = !0 : i.contain = !0,
i
}
function C(e) {
t.Extend.self(this, t.DomComponent, "task-grid");
for (var i, s = u.getTotalTasks() >= 7 ? 9 : e.tasks.length, o = [], A = 0; A < s; A++)
(i = this.initComponent(d)).display(!1),
i.addEventListener("up", I.bind(this, i)),
i.addEventListener("enter", I.bind(this, i)),
o.push(i);
this.total = s,
this.items = o,
this.tasks = e.tasks,
this.selected = [],
this.columns = s % 3 == 0 || 3 === s || s > 4 ? 3 : 2,
this.rows = Math.ceil(s / this.columns),
this.config = {
max_selections: e.config.max_selections || this.total
}
}
t.Extend.proto(d, t.DomComponent),
d.prototype.style = function(t, i) {
var s = i ? 5 : 6;
if (this.loader.style(i),
this.loader.css({
zIndex: 1
}),
this.css({
width: t,
height: t,
overflow: "hidden",
borderRadius: 2,
cursor: this.state.locked ? "pointer" : "default",
backgroundColor: "#e6e6e6",
boxSizing: "border-box"
}),
this.$border.css({
width: t - 2 * s + 2,
height: t - 2 * s + 2,
backgroundColor: "rgba(255,255,255,0)",
position: "absolute",
borderWidth: s,
borderStyle: "solid",
borderColor: this.state.report ? e.Color.error : e.Color.hoverOff,
zIndex: 10,
left: -1,
top: -1
}),
this.$wrapper.css({
width: t,
height: t
}),
this.$image.css({
position: "absolute",
top: 0,
left: 0,
zIndex: 5
}),
null !== this._image) {
var o = y(this._image, this._crop);
this.$image.backgroundImage(this._image, t, t, o)
}
this.size = t
}
,
d.prototype.setup = function(t) {
this.state.empty = !1,
this.key = t.task_key
}
,
d.prototype.load = function() {
var t = this;
return this.timer = setTimeout(function() {
t.loader.display(!0)
}, 250),
u.getImage(this.key).then(function(e) {
if (t.timer && (t.timer = clearTimeout(t.timer)),
null !== t.dom) {
t._image = e,
t.loader.display(!1);
var i = y(e, t._crop);
t.$image.backgroundImage(t._image, t.size, t.size, i)
}
})
}
,
d.prototype.display = function(t) {
t && this._image || (this.state.active = !1,
this.state.locked = !0),
this.$wrapper.css({
opacity: t ? 1 : 0
}),
this.$border.css({
opacity: 0
}),
this.state.empty || this.setAttribute("tabindex", t ? "0" : "-1")
}
,
d.prototype.enableReport = function(t) {
this._image && (this.state.report = t,
this.state.active = !1,
this.$border.css({
opacity: !t && this.state.active ? 1 : 0,
borderColor: this.state.report ? e.Color.warn.base : e.Color.hoverOff
}))
}
,
d.prototype.lock = function(t) {
t || this._image || (t = !0),
this.state.locked = t,
this.css({
cursor: t ? "default" : "pointer"
})
}
,
d.prototype.select = function(t) {
return !0 !== this.state.locked && !this.state.empty && (this.state.active = t,
this.$border.css({
opacity: this.state.active ? 1 : 0
}),
this.setAttribute("aria-pressed", this.state.active),
!0)
}
,
d.prototype.isActive = function() {
return this.state.active
}
,
d.prototype.canReport = function() {
return this.state.report
}
,
d.prototype.report = function() {
if (!this.state.locked)
return !this.state.empty && void this.$border.css({
opacity: 1
})
}
,
t.Extend.proto(C, t.DomComponent),
C.prototype.style = function(t, e) {
for (var i = e ? 5 : 10, s = (t - i * (this.columns - 1)) / this.columns, o = this.rows * s + i * (this.rows - 1), A = 0, r = 0, n = 0; n < this.items.length; n++)
this.items[n].style(s, e),
this.items[n].css({
position: "absolute",
left: A,
top: r
}),
(A += s + i) >= t && (A = 0,
r += s + i);
return this.css({
width: t,
height: o,
position: "relative",
display: "inline-block"
}),
{
width: t,
height: o
}
}
,
C.prototype.lock = function(t) {
for (var e = 0; e < this.total; e++)
this.items[e].lock(t)
}
,
C.prototype.load = function() {
for (var t, e = [], i = null, s = null, o = 0; o < this.tasks.length; o++)
i = this.tasks[o],
(s = this.items[o]).setup(i),
t = s.load(i.datapoint_uri),
e.push(t);
return Promise.all(e)
}
,
C.prototype.display = function(t) {
for (var e = 0; e < this.items.length; e++)
this.items[e].display(t);
t && this.items[0].focus()
}
,
C.prototype.report = function(t) {
for (var e = 0; e < this.items.length; e++)
this.items[e].enableReport(t);
t && this.items[0].focus()
}
,
C.prototype.getAnswers = function() {
for (var t = {}, e = 0; e < this.total; e++)
this.items[e]._image && (t[this.items[e].key] = String(this.items[e].isActive()));
return t
}
;
var I = function(t, e) {
var i = this.config.max_selections;
if (t.canReport())
return t.report(!0),
void this.emit("report", t.key);
if (!t.isActive() && this.selected.length < i)
this.selected.push(t),
t.select(!0);
else
for (var s = this.selected.length; --s > -1; )
this.selected === t && (this.selected.splice(s, 1),
t.select(!1));
this.emit("select", this.selected.length > 0)
};
function q() {
t.Extend.self(this, t.DomComponent, "challenge-view"),
this.width = 0,
this.height = 0,
this.top = 0,
this.mobile = !1,
this.config = {
max_selections: null
},
this.header = this.initComponent(a),
this.grid = null
}
t.Extend.proto(q, t.DomComponent),
q.prototype.style = function(t, e) {
var i = this.header.style(t, 10, e).height;
this.grid && (i += 10 + this.grid.style(t, e).height);
this.css({
width: t,
height: i,
overflow: "hidden"
}),
this.width = t,
this.height = i,
this.mobile = e
}
,
q.prototype.lock = function(t) {
this.grid && this.grid.lock(t)
}
,
q.prototype.setup = function(t, e, i) {
this.config = {
max_selections: i.max_selections && "number" == typeof Number(i.max_selections) ? Number(i.max_selections) : null
},
this.grid && (this.grid = this.grid.destroy()),
this.header.load(t, e)
}
,
q.prototype.loadTasks = function(t) {
var e = this
, i = null;
return this.grid && (i = this.grid).display(!1),
this.grid = this.initComponent(C, {
tasks: t,
config: this.config
}),
this.grid.on("select", function(t) {
e.emit("select", t)
}),
this.grid.on("report", function(t) {
e.emit("report", t)
}),
this.grid.load().then(function() {
i && (i = i.destroy()),
e.grid.style(e.width, e.mobile),
e.grid.display(!0),
e.grid.lock(!1)
})
}
,
q.prototype.report = function(t) {
this.header.displayReport(t),
this.grid && this.grid.report(t)
}
;
var k = "image_label_binary";
function w() {
t.Extend.self(this, t.DomComponent, "challenge");
var e = this;
this.type = k,
this.resolve = null,
this.reject = null,
this.breadcrumbs = 0,
this.served = 0,
this.timer = null,
this.view = this.initComponent(q),
this.view.on("select", function(t) {
e.emit("display-check", t)
}),
this.view.on("report", function(t) {
e.view.lock(!0),
e.emit("report-image", t)
})
}
return t.Extend.proto(w, t.DomComponent),
w.prototype.style = function(t, e) {
var i = this;
this.mobile = t <= 650;
var s = this.mobile ? 300 : 440;
return new Promise(function(t, e) {
try {
i.view.style(s, i.mobile),
t({
width: i.view.width,
height: i.view.height,
mobile: i.mobile
}),
i.css({
width: i.view.width,
height: i.view.height
})
} catch (o) {
e({
event: "challenge-error",
message: "Failed to style",
reason: o.message
})
}
}
)
}
,
w.prototype.setup = function(t) {
var e = this
, i = this.view;
return this.timer && (this.timer = clearTimeout(this.timer)),
this.emit("display-check", !1),
new Promise(function(s, o) {
if (t.tasklist && 0 !== t.tasklist.length) {
try {
i.lock(!1),
i.report(!1),
u.setup(t.tasklist),
u.loadImages(),
e.breadcrumbs = u.getTotalSets(),
e.served = u.getServedCount(),
i.setup(t.requester_question, t.requester_question_example, t.request_config || {});
var A = u.getNextSet();
i.loadTasks(A).then(function() {
i.lock(!1),
e.served = u.getServedCount(),
e.timer = setTimeout(function() {
o({
event: "challenge-expired"
})
}, 1e3 * (t.expiration || 120))
})["catch"](function(t) {
o({
event: "challenge-error",
message: "Failed to setup task",
reason: t
})
})
} catch (r) {
o(r.message)
}
e.resolve = s,
e.reject = o
} else
o({
event: "challenge-error",
message: "Missing tasklist"
})
}
)
}
,
w.prototype.submit = function() {
var t = this
, e = this.view
, i = this.resolve
, s = this.reject;
try {
if (e.lock(!0),
u.storeAnswers(e.grid.getAnswers()),
u.isComplete())
this.emit("display-check", !0),
this.timer && (this.timer = clearTimeout(this.timer)),
u.verifyAnswers() ? i(u.getAnswers()) : s({
event: "challenge-error",
message: "Answers are incomplete"
});
else {
this.emit("display-check", !1);
var o = u.getNextSet();
e.loadTasks(o).then(function() {
t.served = u.getServedCount()
})["catch"](function(t) {
s({
event: "challenge-error",
message: "Failed to setup task",
reason: t
})
})
}
} catch (A) {
s({
event: "challenge-error",
message: "Failed to setup task",
reason: A.message
})
}
}
,
w.prototype.report = function(t) {
var e = this.view;
e.lock(!1),
e.report(t)
}
,
w
}(hcaptcha.core, hcaptcha.context, hcaptcha.lib);


 

Lord_Alfred

Client
Регистрация
09.10.2015
Сообщения
3 916
Благодарностей
3 866
Баллы
113
Для начала попробуйте найти форму, в которой вставлена hcaptcha и засабмитить её.
Я не уверен в том, что там сейчас такие же коллбеки как были в рекапче, которые нужно искать как раз через Initiator, но для клауда я именно так и нашел тот скрипт выше.

Всё таки у разных сайтов по-разному это может работать, нужно смотреть на конкретные случаи. Но мне сейчас некогда этим заниматься, к сожалению. Надеюсь что кто-нибудь из форумчан освоит эти ниндзя-техники и начнёт предоставлять такую услугу (@Alex733, может тебе покопаться?).
 
  • Спасибо
Реакции: Alex733

russya

Client
Регистрация
08.07.2014
Сообщения
743
Благодарностей
78
Баллы
28

Lord_Alfred

Client
Регистрация
09.10.2015
Сообщения
3 916
Благодарностей
3 866
Баллы
113
От RuCaptcha пришло письмо:

Недавно Cloudflare начал проверять IP адрес, с которого решалась капча и сопоставлять его с IP адресом, с которого отправляется токен. Если адреса не совпадают - токен не принимается и страница с капчей перезагружается.
Теперь, чтобы успешно обходить hCaptcha, нужно прислать нам ваш прокси, RuCaptcha API proxy, и отправлять токен через этот же прокси-сервер.
 
  • Спасибо
Реакции: wtfowned

timoxa949

Client
Регистрация
16.11.2018
Сообщения
158
Благодарностей
27
Баллы
28
Спасибо Альфред, за такой подгон! Дай бог тебе здоровья)
 
  • Спасибо
Реакции: Lord_Alfred

Rik-1

Новичок
Регистрация
18.03.2019
Сообщения
7
Благодарностей
0
Баллы
1
"Теперь, чтобы успешно обходить hCaptcha, нужно прислать нам ваш прокси, RuCaptcha API proxy, и отправлять токен через этот же прокси-сервер. " Ребята подскажите пожалуйста как это реализовать на зеннопостере? Либо приведите пример как это делается, не могу разобраться. Буду весьма благодарен.
 

Lord_Alfred

Client
Регистрация
09.10.2015
Сообщения
3 916
Благодарностей
3 866
Баллы
113
Ребята подскажите пожалуйста как это реализовать на зеннопостере? Либо приведите пример как это делается, не могу разобраться. Буду весьма благодарен
Прочитать стартпост, посмотреть тестовые шаблоны, понять что нужно всего лишь прокинуть 2 переменные внутрь шаблона.
 

Rik-1

Новичок
Регистрация
18.03.2019
Сообщения
7
Благодарностей
0
Баллы
1
Прочитать стартпост, посмотреть тестовые шаблоны, понять что нужно всего лишь прокинуть 2 переменные внутрь шаблона.
К сожалению шаблон hCaptchaGnizer не подходит. hCaptcha нужно решить через api https://rucaptcha.com/api-rucaptcha#solving_hcaptcha Я уже писал про сабмит, но так и не получалось решить данную проблему.
 

Lord_Alfred

Client
Регистрация
09.10.2015
Сообщения
3 916
Благодарностей
3 866
Баллы
113
К сожалению шаблон hCaptchaGnizer не подходит. hCaptcha нужно решить через api https://rucaptcha.com/api-rucaptcha#solving_hcaptcha Я уже писал про сабмит, но так и не получалось решить данную проблему.
Шаблон и так работает через это API от рукапчи.
В сабмите нужно самостоятельно разбираться, тут я не дам совета как быть. В любом случае его нужно делать что с hCaptchaGnizer, что без hCaptchaGnizer.
 

Lord_Alfred

Client
Регистрация
09.10.2015
Сообщения
3 916
Благодарностей
3 866
Баллы
113
Пришла беда откуда не ждали.

Посоветуйте недорогие прокси с авторизацией, чтоб хуяпчу решать.
 

Porosenok

Client
Регистрация
26.09.2010
Сообщения
1 280
Благодарностей
96
Баллы
48
у кого-нибудь получилось на клаудфлейре ее решать и сабмитить?
 

Linnker

Client
Регистрация
05.06.2016
Сообщения
11
Благодарностей
0
Баллы
1
Тот же вопрос.
 

russya

Client
Регистрация
08.07.2014
Сообщения
743
Благодарностей
78
Баллы
28

smartz

Пользователь
Регистрация
11.01.2019
Сообщения
30
Благодарностей
0
Баллы
6
hCaptchaGnizer - шаблон для распознавания hCaptcha через капча-сервисы
hCaptchaGnizer (huapchagnizer)

Недавно этот тип капчи появился на CloudFlare (я писал об этом в блоге), а это заставляет задуматься над тем, что в будущем и другие крупные сервисы могут использовать данную капчу. Поэтому нужно действовать на опережение и уже сейчас иметь шаблон для решения хуяпчи. Поэтому я решил взять зарекомендовавший себя ReCaptchaGnizer и немного прокачать его ;-)

Всё та же многолетняя стабильность рекапчагнайзера и удобство по его использованию (воткнул на страницу "проект в проекте" и всё), плюс немного полезных фишек: улучшена многопоточная работа; получение ID капчи; способ блокировать подгрузку капчи, чтобы автосабмит был не нужен; а также мелкие исправления в коде.


Как протестировать работу через Браузер?
  1. Откройте в ProjectMaker шаблон "test_project_Browser.xmlz".
  2. Пропишите свой API-ключ к сервису RuCaptcha в настройках ZennoPoster (если они уже заданы, то этот шаг можно пропустить).
  3. Запустите шаблон и смотрите на результат (и в окно лога, чтобы увидеть если есть какие-то ошибки).

Как протестировать работу в режиме GET/POST?
  1. Откройте в ProjectMaker шаблон "test_project_GETandPOST.xmlz".
  2. Пропишите свой API-ключ к сервису RuCaptcha в настройках ZennoPoster (если они уже заданы, то этот шаг можно пропустить).
  3. Запустите шаблон и смотрите на результат (и в окно лога, чтобы увидеть если есть какие-то ошибки).
PS: A Get / Post mód az " IN_is_getpost " változóval aktiválódik : minden értéket át kell adni neki (például igen).

Hogyan lehet használni a sablonokban?
  1. Regisztrálja az RuCaptcha API kulcsát a ZP / PM beállításaiban, vagy adja hozzá a Key_RuCaptcha.txt fájlhoz a hCaptchaGnizer.xmlz sablon mellett .
  2. Adja hozzá a "Projekt a projektben" kockát a sablonjához, és válassza ki a hCaptchaGnizer.xmlz fájlt .
  3. Küldje el (küldés) azt az űrlapot, ahol maga a hCaptcha található: kattintson a gombra, vagy hajtsa végre a benyújtáshoz szükséges js-kódot (magának kell kitalálnia, hogyan kell ezt megtenni). Ha van megoldása a GET / POST-on keresztül, akkor tegye meg a vizsgálati sablonnal analóg módon (lásd fent).
A változók leírása
  • IN_oldal_url - a huyapchát tartalmazó oldal URL-je. GET / POST módhoz szükséges kitölteni, a böngésző verziójában magától kitölti.
  • OUT_response - a captcha szolgáltatásból származó token ebbe a változóba kerül.
  • OUT_captcha_id - captcha azonosító a szolgáltatásban. Hasznos lehet, ha hibás döntésről jelentést kell küldenie.
  • OUT_badend - a hiba szövege, ha a sablon belsejében történt.
  • IN_kísérletek - az eredmény elérésére tett kísérletek száma. Alapértelmezés: 250.
  • IN_delay_ms - várakozási idő az eredmény elérési kísérletei között (ezredmásodpercekben). Alapértelmezett: 2000 ms.
  • IN_debug - a végrehajtási napló megjelenítése ZP-ben ( mindig PM-ben jelenik meg ). Alapértelmezés szerint: ne jelenjen meg, azaz üres érték.
  • IN_is_getpost - a munkamód aktiválása a GET / POST segítségével.
  • IN_oldal_tartalom - az oldal tartalma a hCaptchával GET / POST módhoz (hogy a sablon onnan elemezze a webhelykulcsot). Semmit sem adhat át, akkor maga a sablon megpróbálja megszerezni az oldal kódját az IN_page_url webhelyről .
  • IN_proxy - annak a munkavállalónak a meghatalmazása, aki dönt a szolgáltatásról (elérhetőnek kell lennie számára, azaz kötelező érvényű).
  • IN_proxytype - proxy típus (SOCKS4, SOCKS5, HTTPS, HTTP).
  • IN_show_response_field - token beviteli mező megjelenítése.
  • IN_show_timer - az időzítő megjelenítése (meddig oldódott a captcha a szolgáltatásban). Alapértelmezés: igen, show.
  • IN_sitekey - a hkapcha oldalkulcsa, amelyet meg kell oldani. Ha több van belőlük az oldalon, akkor érdemes a megfelelőt átadni a változóba.


Inaktív hardverhiba : Hiba történt ... / ProjectInProject hiba
"Hiba történt ... Lásd a fenti leírást a naplóban" vagy "A ProjectInProject művelet végrehajtása feldolgozási hiba".

Ez a helyzet 99% -os annak köszönhető, hogy több olyan eszközöd van, ahová a ZP telepítve van. Általában ilyen hiba fordul elő, ha egy sablont tesztel egy helyi számítógépen, és a helyi számítógép NEM aktív eszköz a személyes fiókjában (a Hardver fül) . Az aktív felszerelés például egy szerver.

Sajnos erre a problémára csak egy megoldás létezik: tesztelje a sablont aktív hardveren.
Egyébként továbbra is ott fogja használni.

[/ SPOILER]

A captcha megkerülése a CloudFlare-en (" Hibás. Kérjük, próbálja újra. " Hiba )
A hCaptchaGnizer sablon futtatása után a következő JavaScript-et kell futtatnia (adja hozzá az "Egyéni JavaScript-kód" kockát):
[CODE = javascript] document.getElementById ("challenge-form"). Küldés (); [/ CODE]
Nagyon fontos, hogy az " Execute: az aktuális oldalon " legyen a képernyőképen látható módon:


Ezt követően néhány másodperc múlva átirányítás történik a kívánt oldalra.
Ebben az esetben nem kell megnyomnia a beküldés gombot ! [/ SPOILER]



Verziótörténet
1.0b [20.04.2020] - első kiadás [/ SPOILER]


Letöltés hCaptchaGnizer: https://yadi.sk/d/Sx5ZZM1XA3ruxw
[/ IDÉZET]





Helló
hCaptchaGnizer - шаблон для распознавания hCaptcha через капча-сервисы
hCaptchaGnizer (хуяпчагнайзер)

Недавно этот тип капчи появился на CloudFlare (я писал об этом в блоге), а это заставляет задуматься над тем, что в будущем и другие крупные сервисы могут использовать данную капчу. Поэтому нужно действовать на опережение и уже сейчас иметь шаблон для решения хуяпчи. Поэтому я решил взять зарекомендовавший себя ReCaptchaGnizer и немного прокачать его ;-)

Всё та же многолетняя стабильность рекапчагнайзера и удобство по его использованию (воткнул на страницу "проект в проекте" и всё), плюс немного полезных фишек: улучшена многопоточная работа; получение ID капчи; способ блокировать подгрузку капчи, чтобы автосабмит был не нужен; а также мелкие исправления в коде.


Как протестировать работу через Браузер?
  1. Откройте в ProjectMaker шаблон "test_project_Browser.xmlz".
  2. Пропишите свой API-ключ к сервису RuCaptcha в настройках ZennoPoster (если они уже заданы, то этот шаг можно пропустить).
  3. Запустите шаблон и смотрите на результат (и в окно лога, чтобы увидеть если есть какие-то ошибки).

Как протестировать работу в режиме GET/POST?
  1. Откройте в ProjectMaker шаблон "test_project_GETandPOST.xmlz".
  2. Пропишите свой API-ключ к сервису RuCaptcha в настройках ZennoPoster (если они уже заданы, то этот шаг можно пропустить).
  3. Запустите шаблон и смотрите на результат (и в окно лога, чтобы увидеть если есть какие-то ошибки).
PS: Активация режима Get/Post производится с помощью переменной "IN_is_getpost": в неё нужно передать любое значение (например, yes).

Как использовать в своих шаблонах?
  1. Прописать API-ключ к RuCaptcha в настройках ZP/PM или добавить его в файл Key_RuCaptcha.txt рядом с шаблоном hCaptchaGnizer.xmlz.
  2. Добавить в свой шаблон кубик "Проект в проекте" и выбрать в нём hCaptchaGnizer.xmlz.
  3. Сделать сабмит (отправку) формы где находится hCaptcha самостоятельно: сделать клик на кнопку или выполнить нужный js-код для сабмита (вам нужно будет самостоятельно разобраться как это делать). В случае если у вас решение через GET/POST, то сделать по аналогии с тестовым шаблоном (см. выше).
Описание переменных
  • IN_page_url - URL страницы с хуяпчей. Необходимо заполнять его для GET/POST режима, в браузерном варианте он заполнится сам.
  • OUT_response - результирующий токен из капча-сервиса попадёт в эту переменную.
  • OUT_captcha_id - идентификатор капчи в сервисе. Может пригодится, если вам нужно сделать отправку отчёта о некорректном решении.
  • OUT_badend - текст ошибки, если она произошла внутри шаблона.
  • IN_attempts - количесто попыток получить результат. По умолчанию: 250.
  • IN_delay_ms - время ожидания между попытками получения результата (в миллисекундах). По умолчанию: 2000 мс.
  • IN_debug - отображать ли лог выполнения в ZP (в PM отображается всегда). По умолчанию: не отображать, т.е. пустое значение.
  • IN_is_getpost - активация режима работы через GET/POST.
  • IN_page_content - содержимое страницы с hCaptcha для GET/POST режима (чтоб шаблон спарсил оттуда sitekey). Можно ничего не передавать, тогда шаблон сам попытается получить код страницы из IN_page_url.
  • IN_proxy - прокси для работника, который будет решать на сервисе (должны быть доступны ему, т.е. без привязки).
  • IN_proxytype - тип прокси (SOCKS4, SOCKS5, HTTPS, HTTP).
  • IN_show_response_field - показать поле ввода токена.
  • IN_show_timer - показать таймер (за сколько была решена капча в сервисе). По умолчанию: да, показывать.
  • IN_sitekey - сайткей от хкапчи, которую нужно решить. Если их на странице несколько, то полезно передать в переменную правильный.


Ошибка неактивного оборудования: Что-то пошло не так... / Ошибка ProjectInProject
"Что-то пошло не так... Смотри описание выше в логе" или "Выполнение действия ProjectInProject Ошибка при обработке".

Такая ситуация на 99% связана с тем, что у вас несколько устройств, где установлен ZP. Обычно такая ошибка вываливается, если вы тестируете шаблон на локальном компьютере и у вас в личном кабинете (вкладка "Оборудование") локальный компьютер - это НЕ активное оборудование. А активным оборудованием у вас является, например, сервер.

Решение данной проблемы, к сожалению, только одно: тестируйте шаблон на активном оборудовании.
Всё равно вы его именно там и будете дальше использовать.

Обход капчи на CloudFlare (ошибка "Incorrect. Please try again.")
После выполнения шаблона hCaptchaGnizer - нужно запустить следующий JavaScript (добавить кубик "Свой JavaScript-код"):
JavaScript:
document.getElementById("challenge-form").submit();
Очень важно поставить "Выполнять: на текущей странице" как это показано на скрине:


После этого через несколько секунд произойдёт редирект на нужную страницу.
Нажимать кнопку сабмита в этом случае - не нужно!



История версий
v1.0b [05.04.2020] - первый релиз


Скачать hCaptchaGnizer: https://yadi.sk/d/Sx5ZZM1XA3ruxw


Helo

I tested this but not working for me.
What did I miss?

I added Ruchapca (2chaptcha) API key.
I added to my project (project in project)
And I think it works (chost charged from my 2chaptcha account) - I got this code - but chaptcha didn't resolved :

"
SubprojecthCaptchaGnizer. Execution of C# code of Result:P0_eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJwYXNza2V5IjoiazJnY0doQ1JHUkxpeXdURXI0aFMyNzFqSzhjSVFZQWpSU3RGZWNibllzak0yWDcxdit1dzhxNHFHU0o5SjQyWUZBc1dxM250cFBBK0NLZlZvcjU3N0dTWktFbzZYUk9vbFdQRE5WMVZBZzcvaUd5UkxOVGtPQWNZZW9WR1F0TkNBNkZ4MGY3dzdOYWJ5c0RzY3EzRm90QmViRm9HemI2OXhPbVA2YU03QjM3ZkNjMEc3bzg1VCtsY2ladWl1Qk4raG96M3ZhYmV3aDNvdnZGRmo0MzlkNnFvZFcyUDBhQlAydDNBaHVxNDdGZmtCNDdTWktMN3NRYlVDNmNSYVBoWFh0YndiMWlMWUI0TDBZOXFVTmZoZ296Unh2K1NjdUc4M3MrM21lUEhTZnhJUENiRDJ2Tk43ZmVvU0ROUjF2T3NPcVo1aFd1c0lmSVF0Q0pqSC8yRUFEUUZHb0ptNWdXMlZKMW8rSThTQlBFN2wxNWxSRUYwajdXRmJwMXNxVTFteUtPZHdPNFhoUGE5ODhNSExrWjBaNkM5aTFaYm0wa2NXV2FaQU5VMkhwMGFla1RlYWRYMGtzNTg3ZHErNC9iZTlIc3lKU0JVVEtpcnVnMVBsK296cXhYL3NaRzBQa0sxMWRLVnVsaXBzdFV5WWFKMkFaNW5XZVZTN2s2VmFDVENRRW4zQmxkOEpORzBlcXBzMjl2eEhpZzl0OFZGdFZ1L3daU2d2YWkyUVNWWGxQcGdNMGI2cjVqSmNvYVFhck5iNTJQUDVkdHQzK0ZENS9ia3BHdzJXUTVXMXYwRE1ScDVyNWx2dWRrdG1jM0tpUSthZWNBQkVrTlZTRjltc1R4QlpLV2dIeGZnU2I1Tm03c0FBMXZ6cE9kcVBVdGltM3dsRElmZ1lseDdmRlJ2MWR6NGRjWHR3dERhb2xEVzcwT1N2cVNzUmo4bG05cHpVNDhGclFGY0dnSTl4eUpRb1lWR2x3WjNsaEVlSGVxYWt6VE5ndFplL012ckRTamhoWGgvZGFTRVNDREtkYW94d0lqUzdjNzRqT0kwYm9HL3NvRXo2dTZyZkJqUDFrYVgzZkJqTERFWGRwWDhOTjgzOWt3akxZVXd4MjFGSWhlVUxTOXNDR1hPd0Q4MEduTUZoME1DZ2pHdEFqZEIwem5mMGkyaDUvdEl5VFBJQ3kzZzdmdGhUTmd3aWZSL1J0T242SVQ5NjJlMVNVdXpGOXpWUjl0L2ZFWjNlalRkS0tNbWxEdHc5Ymc0dXhEVC9rM1JPak9xMWRrMWdiSHp6OXowL2puSngzR2RhdzZvZ09SdkVNWXg2b0JGT2RLdlNyT0NtWXNBdU1HTFFzbXJGZ2l0SWgrclZpbVZHN28zMEwvenBpVnR5VnV1bXRrZmpXQzVXTUVGTVUwdEZOVWtRaUJ0NUJhcVRiMlh5ZnhEbjJ3d1dBdjdKb3VmZUFYeWJ3V3BxbEtLcHJZOGJzcUIyTEhyTjBlR3pwVnZTWVhlbGdMcVhxYmFEeFJQMzcrWDI5V0xHVGFBdkZyWFhHQWZZUkVqaGtLL0lWTVNWd0REUjVCVTQ2aDZvV0RBb1RVQ1FraXU1MHk1VVZ2bFVrVVpNNEJjd1Rabkc1U1hhamJ5OERRRXJickw5WFg5M0J3ZlUvRjVlQ2FaUzFTZkdHNnB0bmRteFZJQmdydnhrenNMdWtBRmJ0NFA3Rm93emZSVi9LbnJGdjU2SXZicTNuUDVaNXVLYzA5dDZVc285WTdmejNNVkN3ZFhHV1NKVVYwdzBmQ2RlOURaUmJQaW00MHhPR0VBejRZdWN1WUIvSmtlU2ZpZTFxUHliNDk1WU15NjdRL2NiUjdpYXRwU2hzekdxS0NQS2JtdmQ2MWV5bzEyMWlMcnErdVNteDZ4MUtrbVI0MWlRZWFRem9vV3FZRmZBNUVLSFhvMmVnMEFaU0NRTFNvazY4YVhKcEwycGs2TGVJMXpLT1ZPUUd2YmtoTjZFRXB5a3lsaFVPbENtcWpyODE0aXc1TE5xcEVSYjhCN3RTTDdWbEx3T1BKdCt2a3BGeGVDWmtCUnpaMEZGcXk2Wmc2WGFzL0k5S3pEc0dCd0dTODN5cy9jSkRaT1hwblNCeklScHI3SUhhUHRSRGRyWGVGS1NVTHo3YnVMb3JGYThacU04WEQ0dnpiT0JZOHFiM3BqMi8zVkRvY2JRRThiUHpMTjgzR3NCL3N3NGhnbE1LU2ozYkowN0xIcXh2SEdDNjlTbldKVWJ3MVpvTDY5S25sN3JteStxY2VpWFc3OWRYNWZ5aUZmeEprcFk5NTRJUHh4L1JwSk1UaHdvNTVjVm53RG9RTWJFY3djczljQmtuMGtQYlFtOFErWUkrSXljc3hrdEFUaHQzd1gwTFY1ejJLcmJidUVuUHh2N3U3VGFERmNTSS84cGdQbjFiTm81MHQrYlNIYTBOTGszVWE1cC80MnVqQWQ1SEpOL2NTVkVrU1N5dENBc3NkM05CeVZaYythZmk2UHk2L1pZd0pNRHBTYS8zSlpZVmxxU2tmZCt5bEwrWGZ6NGk1NzByc2w3MWx5eW80NkZDak5aQUVkV2RTYmMxZmhyb3h2a2MxM1JLY0VlNFArRzNnOUhkc1RrbVBrb1dXQTdlYUgzbDhKc0prMEc3T3F6WW1HUGRudjVNdGtFY01oSGNLSzRnPT1TSjFZMFVxSUg5ejlUK2RiIiwiZXhwIjoxNTk5MDc5Njc2LCJzaGFyZF9pZCI6MTA4MDI5MTE0LCJwZCI6MH0.jd9I70zYPJqvfVTpS4vPbO7waG9XQrAKtV_bn6XH6ms

"
Should I do something else for resolve this captcha ?
 

Taurus Silver

Client
Регистрация
24.01.2017
Сообщения
81
Благодарностей
11
Баллы
8
Zennoposter 7.1.7.1 не работает тестовый проект. Пишет ошибку:
Выполнение действия ProjectInProject Не удалось загрузить проект по пути C:\Users\...\ZennoPoster\...\hCaptchaGnizer.xmlz

И сам проект hCaptchaGnizer.xmlz не открывает. Возможно это связано с тем, что в версии 7 формат файлов .zp
 

Zedx

Client
Регистрация
12.06.2018
Сообщения
1 341
Благодарностей
908
Баллы
113
Zennoposter 7.1.7.1 не работает тестовый проект. Пишет ошибку:
Выполнение действия ProjectInProject Не удалось загрузить проект по пути C:\Users\...\ZennoPoster\...\hCaptchaGnizer.xmlz

И сам проект hCaptchaGnizer.xmlz не открывает. Возможно это связано с тем, что в версии 7 формат файлов .zp
Такая же проблема. Как её можно решить?

UPD. Проверил на 5й версии - точно такая же ошибка.
изображение_2020-11-06_015007.png
 
Последнее редактирование:

Lord_Alfred

Client
Регистрация
09.10.2015
Сообщения
3 916
Благодарностей
3 866
Баллы
113
  • Спасибо
Реакции: orka13 и Zedx
Регистрация
18.05.2017
Сообщения
72
Благодарностей
5
Баллы
8
в 7.1.5.0 никак не получиться пользоваться вашим шаблоном?
 

Lord_Alfred

Client
Регистрация
09.10.2015
Сообщения
3 916
Благодарностей
3 866
Баллы
113

spbalexpiter

Client
Регистрация
24.11.2013
Сообщения
397
Благодарностей
91
Баллы
28
Ответ получается на колбеке или json или просто текстом?
 

Lord_Alfred

Client
Регистрация
09.10.2015
Сообщения
3 916
Благодарностей
3 866
Баллы
113
Регистрация
18.05.2017
Сообщения
72
Благодарностей
5
Баллы
8
Подскажите пожалуйста как быть с авито, там не появляется кнопка "закончить" пока я не выберу какую либо картинку
Я так понимаю если я выбираю первую попасшуюся и нажимаю закончить, то он говорит попробуйте еще раз.
Как мне обойти эту штуку?
 

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)