<turbo-stream action="append" target="posts_list"><template>    <div class="postbit" id="209857" data-post-id="209857">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="cenotaph" src="/assets/icons/user-9f439610.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  cenotaph
                      <span class="op-star" title="Thread Starter">
                        <img alt="OP" class="op-star-icon" src="/assets/thread-icons/thread-icon-thread-starter-df91e872.png" />
                      </span>
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Those are interesting and good reads thank you! I Will definitely read more of the first link <img src="https://forum.elixirforum.com/images/emoji/apple/slight_smile.png?v=15" title=":slight_smile:" class="emoji" alt=":slight_smile:" loading="lazy" width="20" height="20"></p>
<aside class="quote no-group" data-username="eksperimental" data-post="11" data-topic="38826">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/eksperimental/48/1401_2.png" class="avatar"> eksperimental:</div>
<blockquote>
<p>I am wondering if you could use pictures of random objects, like coins, pencils, forks, spoons, bottles, etc. for the same purpose. It may even be harder for AI engines to break.</p>
</blockquote>
</aside>
<p>I basically did what you have thought of a decade ago before catcpha2 ripped it off in a really bad way again that people make memes off it again. I posted short history on this blog post but didn’t link to the library.</p>
<aside class="onebox allowlistedgeneric" data-onebox-src="https://elxsy.com/blog/giving-the-finger-to-those-pesky-bots">
  <header class="source">
      <img src="https://elxsy.com/favicon-32x32.png" class="site-icon" alt="" width="32" height="32">

      <a href="https://elxsy.com/blog/giving-the-finger-to-those-pesky-bots" target="_blank" rel="noopener nofollow ugc">elxsy.com</a>
  </header>

  <article class="onebox-body">
    <img width="512" height="512" src="https://elxsy.com/images/og-fadd89c902cb48cc50dc3f9995d23e9a.jpg?vsn=d" class="thumbnail onebox-avatar" alt="">

<h3><a href="https://elxsy.com/blog/giving-the-finger-to-those-pesky-bots" target="_blank" rel="noopener nofollow ugc">Giving the finger to those pesky bots!</a></h3>

  <p>Aren't you tired of those pesky internet bots that spam your website? This is a short story of how I gave them the finger.</p>


  </article>

  <div class="onebox-metadata">
    
    
  </div>

  <div style="clear: both"></div>
</aside>

<p>That picture is coming from the Webarchive 2009-06</p>
<p><img src="https://web.archive.org/web/20110214060031if_/http://www.elxsy.com/wp-content/uploads/2009/06/IMG_0273.png" alt="" role="presentation" width="320" height="480"></p>
<p>The idea was to click on distinctively different objects, requiring user input that bots don’t have and allowing people to validate the result locally with a 3-4 line method that uses same signature as the api call result.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="209857" data-batch-url="/posts/batch_likers">
                        2
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/finger-a-verification-library-to-prove-hommaannnnnness-of-a-user/38826/12">Post #11</a>
	                </div>
	            </div>
              <div id="likers-container-209857" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="209857"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #11"></div>
  </section>
</div>
    <div class="postbit" id="209866" data-post-id="209866">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="eksperimental" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/eksperimental/120/1401_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  eksperimental
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group" data-username="cenotaph" data-post="12" data-topic="38826">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/letter_avatar_proxy/v4/letter/c/eb8c5e/48.png" class="avatar"> cenotaph:</div>
<blockquote>
<p>I basically did what you have thought of a decade ago before catcpha2 ripped it off in a really bad way again that people make memes off it again. I posted short history on this blog post but didn’t link to the</p>
</blockquote>
</aside>
<p>sorry, I mean put many random objects of the same type and make people count them instead of finger, like, : 5 coins, 3 forks, 1 cloth pin, 7 marbles.<br>
People didn’t even need to know what the objects are, so long as the objects are distinguishable.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="209866" data-batch-url="/posts/batch_likers">
                        1
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/finger-a-verification-library-to-prove-hommaannnnnness-of-a-user/38826/13">Post #12</a>
	                </div>
	            </div>
              <div id="likers-container-209866" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="209866"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #12"></div>
  </section>
</div>
    <div class="postbit" id="209867" data-post-id="209867">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="cenotaph" src="/assets/icons/user-9f439610.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  cenotaph
                      <span class="op-star" title="Thread Starter">
                        <img alt="OP" class="op-star-icon" src="/assets/thread-icons/thread-icon-thread-starter-df91e872.png" />
                      </span>
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>I see, we are going down the google route there.</p>
<p>our vision speed, clustering &gt;&gt; detection &gt;&gt; analysis - counting.</p>
<p>Hand and fingers are native to us since childhood so I went down the analysis route identifying and counting some different objects will take slower time and chore some for many.</p>
<p>I will sleep on it.</p>
<p>I might resurrect IamHuman with my own image set as an open-source service again - then won’t have any trouble for copyright, royalties of publishes used pictures.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="209867" data-batch-url="/posts/batch_likers">
                        1
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/finger-a-verification-library-to-prove-hommaannnnnness-of-a-user/38826/14">Post #13</a>
	                </div>
	            </div>
              <div id="likers-container-209867" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="209867"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #13"></div>
  </section>
</div>
    <div class="postbit" id="210138" data-post-id="210138">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="OvermindDL1" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/OvermindDL1/120/2677_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  OvermindDL1
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Some of those are quite interesting.  ^.^</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="210138" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/finger-a-verification-library-to-prove-hommaannnnnness-of-a-user/38826/15">Post #14</a>
	                </div>
	            </div>
              <div id="likers-container-210138" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="210138"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #14"></div>
  </section>
</div>
    <div class="postbit" id="210141" data-post-id="210141">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="cenotaph" src="/assets/icons/user-9f439610.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  cenotaph
                      <span class="op-star" title="Thread Starter">
                        <img alt="OP" class="op-star-icon" src="/assets/thread-icons/thread-icon-thread-starter-df91e872.png" />
                      </span>
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>I have had so many typos in my post, lack of sleep showed there! I can’t edit it now but thank you for understanding.</p>
<p>Two decades ago I had to do instruction and teaching courses as well as computer science and engineering courses</p>
<p>I studied both of these subjects and found them fascinating. Greatly helped me do visual games and simulations for challenging physics subjects.</p>
<p>Basis of them are very similar to CS, how humans operate (Behaviour - Kernel), and how humans learn (Cognitive - How to shape your programme)</p>
<p>If it’s any interest have a read.</p>
<aside class="onebox wikipedia" data-onebox-src="https://en.wikipedia.org/wiki/Behaviorism">
  <header class="source">

      <a href="https://en.wikipedia.org/wiki/Behaviorism" target="_blank" rel="noopener nofollow ugc">en.wikipedia.org</a>
  </header>

  <article class="onebox-body">
    

<h3><a href="https://en.wikipedia.org/wiki/Behaviorism" target="_blank" rel="noopener nofollow ugc">Behaviorism</a></h3>

<p>

 Behaviorism is a systematic approach to understanding the behavior of humans and other animals. It assumes that behavior is either a reflex elicited by the pairing of certain antecedent stimuli in the environment, or a consequence of that individual's history, including especially reinforcement and punishment contingencies, together with the individual's current motivational state and controlling stimuli. Although behaviorists generally accept the important role of heredity in determining b Be...</p>

  </article>

  <div class="onebox-metadata">
    
    
  </div>

  <div style="clear: both"></div>
</aside>

<aside class="onebox wikipedia" data-onebox-src="https://en.wikipedia.org/wiki/Cognitive_psychology">
  <header class="source">

      <a href="https://en.wikipedia.org/wiki/Cognitive_psychology" target="_blank" rel="noopener nofollow ugc">en.wikipedia.org</a>
  </header>

  <article class="onebox-body">
    

<h3><a href="https://en.wikipedia.org/wiki/Cognitive_psychology" target="_blank" rel="noopener nofollow ugc">Cognitive psychology</a></h3>

<p>Cognitive psychology is the scientific study of human mental processes such as attention, language use, memory, perception, problem solving, creativity, and reasoning. Cognitive psychology originated in the 1960s in a break from behaviorism, which held from the 1920s to 1950s that unobservable mental processes were outside the realm of empirical science. This break came as researchers in linguistics, cybernetics, and applied psychology used models of mental processing to explain human behavior Ph...</p>

  </article>

  <div class="onebox-metadata">
    
    
  </div>

  <div style="clear: both"></div>
</aside>
 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="210141" data-batch-url="/posts/batch_likers">
                        1
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/finger-a-verification-library-to-prove-hommaannnnnness-of-a-user/38826/16">Post #15</a>
	                </div>
	            </div>
              <div id="likers-container-210141" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="210141"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #15"></div>
  </section>
</div>
    <div class="postbit" id="210255" data-post-id="210255">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="cenotaph" src="/assets/icons/user-9f439610.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  cenotaph
                      <span class="op-star" title="Thread Starter">
                        <img alt="OP" class="op-star-icon" src="/assets/thread-icons/thread-icon-thread-starter-df91e872.png" />
                      </span>
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p><strong>So far</strong><br>
It has been out in the wild for a couple of days but had 0 spam incoming and now time to reap the benefits</p>
<p><strong>Setup and context</strong></p>
<p></p><div class="lightbox-wrapper"><a class="lightbox" href="https://forum.elixirforum.com/uploads/default/original/3X/c/8/c8fd5d5d5df1c27075cc1e84165583fde947eab5.jpeg" data-download-href="https://forum.elixirforum.com/uploads/default/c8fd5d5d5df1c27075cc1e84165583fde947eab5" title="Screenshot 2021-04-13 at 13.43.46" rel="nofollow"><img src="https://forum.elixirforum.com/uploads/default/original/3X/c/8/c8fd5d5d5df1c27075cc1e84165583fde947eab5.jpeg" alt="Screenshot 2021-04-13 at 13.43.46" data-base62-sha1="sG2kb6jfKUhtbUWgyUVmOvhByHX" width="208" height="300"><div class="meta"><svg class="fa d-icon d-icon-far-image svg-icon" aria-hidden="true"><use href="#far-image"></use></svg><span class="filename">Screenshot 2021-04-13 at 13.43.46</span><span class="informations">608×874 41.6 KB</span><svg class="fa d-icon d-icon-discourse-expand svg-icon" aria-hidden="true"><use href="#discourse-expand"></use></svg></div></a></div><p></p>
<ul>
<li>field is named as “fingers”, throws bots off, don’t know how to treat the field name</li>
<li>It is marked as required on HTML5 form as well as on the server validation which happens in the controller or Ecto right now.</li>
<li>It is a number field on HTML5, so only integer numbers can be entered given the browser supports it</li>
<li>A human is expected to enter numbers into it</li>
</ul>
<p><strong>I have been logging stuff on the “failed cases”</strong></p>
<p><em>don’t worry omitting password and email fields before logging</em></p>
<pre data-code-wrap="elixir"><code class="lang-elixir">Failed Registration from 5.166.201.102
%{"email" =&gt; "***@gmail.com", "fingers" =&gt; "", "name" =&gt; "Susanteete", "password" =&gt; "***"}

Failed Contact from 170.254.230.186
%{"email" =&gt; "***@edlen.com", "fingers" =&gt; "rdHoGzYqkDZLgVc", "message" =&gt; "mWAhJiaHvrMLSlR", "subject" =&gt; "YQJxLAFTXWkVl"}

Failed Registration from 170.254.230.186
%{"email" =&gt; "***@edlen.com", "fingers" =&gt; "NMFbSguTeYn", "name" =&gt; "ocJLmzwV", "password" =&gt; "***"}
</code></pre>
<p>You can check the reputation of IPs from this open community awesomeness (which I use to mass ban 20k bots via my firewall, god knows how much logs I would get if I hadn’t already)</p>
<p><a href="https://www.abuseipdb.com/check/170.254.230.186" class="onebox" target="_blank" rel="noopener nofollow ugc">https://www.abuseipdb.com/check/170.254.230.186</a></p>
<p>It is definitely a harmful spam bot.</p>
<p>Armed with these bits of information we could do the following.</p>
<p><strong>Taking it to the next level</strong></p>
<p>When the verification fails, don’t just disregard it, but pass the answer and given answer into the library analysis section. Could be a different supervisor tree or even offline, cron process.</p>
<p>Hoomannn vs Makina</p>
<ol>
<li>Is it empty? It can’t be empty for an actual user with a “text/html” browser</li>
<li>Is it the required string length? Asked for 2 images how many did we receive?</li>
<li>Does it contain non-numeric characters? It can’t or shouldn’t be for an actual user on html browser.</li>
</ol>
<p>Ok matches total weight is higher than the threshold, very likely a bot but could be a human dicking around:</p>
<ul>
<li>Verify the reputation and confidence with abuseipdb api</li>
<li>Send the report to abuseipdb, because even dicking around is abuse and should be reported. If it’s a genuine user then it will expire after a while without given no any other reports incoming.</li>
</ul>
<p>Not enough confidence or evidence:</p>
<ul>
<li>log and move on</li>
</ul>
<p>Enough confidence and evidence:</p>
<ul>
<li>Ban the IP via OS, network firewalls (ufw, iptables, ipset, WAF etc)</li>
<li>Preferably via a small driver package for each flavour</li>
</ul>
<p><strong>what do you people think?</strong></p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="210255" data-batch-url="/posts/batch_likers">
                        3
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/finger-a-verification-library-to-prove-hommaannnnnness-of-a-user/38826/17">Post #16</a>
	                </div>
	            </div>
              <div id="likers-container-210255" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="210255"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #16"></div>
  </section>
</div>
    <div class="postbit" id="210339" data-post-id="210339">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="Exadra37" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/Exadra37/120/9183_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  Exadra37
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>When your library gets traction it will end-up in the human automated solving APIs:</p>
<aside class="onebox allowlistedgeneric" data-onebox-src="https://anti-captcha.com/mainpage">
  <header class="source">

      <a href="https://anti-captcha.com/mainpage" target="_blank" rel="noopener nofollow ugc">anti-captcha.com</a>
  </header>

  <article class="onebox-body">
    <div class="aspect-image" style="--aspect-ratio:690/362;"><img src="https://anti-captcha.com/images/og-preview.webp" class="thumbnail" alt="" width="690" height="362"></div>

<h3><a href="https://anti-captcha.com/mainpage" target="_blank" rel="noopener nofollow ugc">Anti Captcha: Captcha Solving Service since 2007. Solve Recaptcha, image...</a></h3>

  <p>Bypass reCaptcha, image captcha, and others for the cheapest price</p>


  </article>

  <div class="onebox-metadata">
    
    
  </div>

  <div style="clear: both"></div>
</aside>

<blockquote>
<h3>We assign a worker for your captcha</h3>
<p>100% of captchas are solved by human workers from around the world. This is why by using our service you help thousands of people to feed themselves and their families.<br>
An average worker makes about $100 per month which is a very good salary in such countries like India, Pakistan, Vietnam and others. With your help they now have a choice between working in polluted industries and working in front of a computer.</p>
</blockquote>
<p>So, you may want to give random names to each image you send for a challenge, like a timestamp based hash, thus it will make hard/impossible for this types of services to cache the result to each of your challenges.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="210339" data-batch-url="/posts/batch_likers">
                        2
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/finger-a-verification-library-to-prove-hommaannnnnness-of-a-user/38826/18">Post #17</a>
	                </div>
	            </div>
              <div id="likers-container-210339" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="210339"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #17"></div>
  </section>
</div>
    <div class="postbit" id="210340" data-post-id="210340">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="cenotaph" src="/assets/icons/user-9f439610.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  cenotaph
                      <span class="op-star" title="Thread Starter">
                        <img alt="OP" class="op-star-icon" src="/assets/thread-icons/thread-icon-thread-starter-df91e872.png" />
                      </span>
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>ahaha loved that website, the animations especially the quality control side <img src="https://forum.elixirforum.com/images/emoji/apple/smiley.png?v=15" title=":smiley:" class="emoji" alt=":smiley:" loading="lazy" width="20" height="20"> thank you for that!</p>
<p>Currently, all images are stitched together as a final image with the name of your choosing. The software won’t be able to identify individual pictures.</p>
<p>From their instructions, it is apparently solved by actual humans so it will solve any captcha on the planet since it is designed to prove humanness <img src="https://forum.elixirforum.com/images/emoji/apple/smiley.png?v=15" title=":smiley:" class="emoji" alt=":smiley:" loading="lazy" width="20" height="20"> we need an anti-anti-captcha design that is only solvable by machines for those guys <img src="https://forum.elixirforum.com/images/emoji/apple/smiley.png?v=15" title=":smiley:" class="emoji" alt=":smiley:" loading="lazy" width="20" height="20">! That will show them!</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="210340" data-batch-url="/posts/batch_likers">
                        3
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/finger-a-verification-library-to-prove-hommaannnnnness-of-a-user/38826/19">Post #18</a>
	                </div>
	            </div>
              <div id="likers-container-210340" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="210340"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #18"></div>
  </section>
</div>
    <div class="postbit" id="210342" data-post-id="210342">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="Exadra37" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/Exadra37/120/9183_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  Exadra37
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Bear in mind that this guys are just one of the many services of the type. Many more exist, and some may only exist in the dark-web.</p>
<aside class="quote no-group" data-username="cenotaph" data-post="19" data-topic="38826">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/letter_avatar_proxy/v4/letter/c/eb8c5e/48.png" class="avatar"> cenotaph:</div>
<blockquote>
<p>From their instructions, it is apparently solved by actual humans so it will solve any captcha on the planet since it is designed to prove humanness</p>
</blockquote>
</aside>
<p>The point is that its solved by humans only on the first API call done to their service, afterwards they return the cached result, otherwise it would not scale.</p>
<aside class="quote no-group" data-username="cenotaph" data-post="19" data-topic="38826">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/letter_avatar_proxy/v4/letter/c/eb8c5e/48.png" class="avatar"> cenotaph:</div>
<blockquote>
<p>Currently, all images are stitched together as a final image with the name of your choosing. The software won’t be able to identify individual pictures.</p>
</blockquote>
</aside>
<p>In my opinion this name should be unique for each time a challenge is made.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="210342" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/finger-a-verification-library-to-prove-hommaannnnnness-of-a-user/38826/20">Post #19</a>
	                </div>
	            </div>
              <div id="likers-container-210342" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="210342"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #19"></div>
  </section>
</div>
    <div class="postbit" id="210344" data-post-id="210344">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="cenotaph" src="/assets/icons/user-9f439610.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  cenotaph
                      <span class="op-star" title="Thread Starter">
                        <img alt="OP" class="op-star-icon" src="/assets/thread-icons/thread-icon-thread-starter-df91e872.png" />
                      </span>
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group" data-username="Exadra37" data-post="20" data-topic="38826">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/exadra37/48/9183_2.png" class="avatar"> Exadra37:</div>
<blockquote>
<p>Bear in mind that this guys are just one of the many services of the type. Many more exist, and some may only exist in the dark-web.</p>
</blockquote>
</aside>
<p>Yeah definitely, this is what I said on the blog post.</p>
<blockquote>
<p>It is bespoke and <strong>good enough</strong> to deter the 99% and slow down the 1% - if they ever decide to bother with an already free and non-membership required services platform.</p>
</blockquote>
<aside class="quote no-group" data-username="Exadra37" data-post="20" data-topic="38826">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/exadra37/48/9183_2.png" class="avatar"> Exadra37:</div>
<blockquote>
<p>The point is that its solved by humans only on the first API call done to their service, afterwards they return the cached result, otherwise it would not scale.</p>
</blockquote>
</aside>
<p>Well then in fingers case, it would work the first time and then not work again, you can’t cache the result, it changes every page load. (Unless you did something funky with the library)</p>
<p>Workflow:</p>
<pre data-code-wrap="elixir"><code class="lang-elixir">GET /finger.jpg

finger_controller

&gt; {answer, image} = Finger.generate(2)
&gt; {"35", &lt;&lt;1, 3, 4, ... &gt;&gt;}
&gt; session_put(answer)
&gt; respond(image)

GET /important

important stuff template
&lt;form action=important method-post&gt;
&lt;img src=finger.jpg&gt;
&lt;input type=number name=finger&gt;
&lt;/form&gt;

POST /important

important stuff controller
&gt; if form.finger == session_get(finger) then do stuff
</code></pre>
<p>They can cache that jpg all they want it will be valid only first time and if it solved by a human.</p>
<p>you could define a random route for the finger controller also if you wanted them never caching that statically named dynamic picture.</p>
<pre data-code-wrap="elixir"><code class="lang-elixir">/finger/:name 

&lt;img src=finger/random_url_safe_string 32 &gt;

</code></pre>
<p>If I were to actually deal with them I would send a zip bomb or corrupt chunked 100MB file everytime directly from nginx for their IP ranges when they wanted to cache something.</p>
<p>After I had my fun, I would drop the IP ranges at the FW perimeter</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="210344" data-batch-url="/posts/batch_likers">
                        1
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/finger-a-verification-library-to-prove-hommaannnnnness-of-a-user/38826/21">Post #20</a>
	                </div>
	            </div>
              <div id="likers-container-210344" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="210344"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #20"></div>
  </section>
</div>
</template></turbo-stream><turbo-stream action="replace" target="load-more-container"><template><div id="load-more-container" class="load-more-container">
    <a class="load-more-button" data-turbo-stream="true" href="/topics/38826/load_more?page=3">Load more posts (7 remaining)</a>
</div></template></turbo-stream>