极验证Geetest 通过python代理 透传

看了几个破解Geetest 四代滑块的视频和文章,有点望而生畏,github上也有收集极验四代滑块所有图片后经过ai训练做的破解代码,但作者说成功率只有90%。

于是考虑通过python透传的方法,j就是对自动化脚本套个【网页界面】的壳,把滑块验证放在壳上(网页),验证过程还是由真人去完成,这就需要让python端作为代理,分别转发/load 和 /verify的请求和响应了。

浏览器前端 (Web SDK)
      ↓   (1) /load:   GET 请求 / JSONP响应
      ↓   (3) /verify     GET 请求 / JSONP响应
Python 代理服务器 (Flask/Django)
      ↓   (2) 转换成Androdi SDK格式,模拟 Android SDK → 发真实 /load
      ↓   (4) 转换成Androdi SDK格式,模拟 Android SDK → 发真实 /verify
GeeTest 服务器

如果都是web sdk的话,就不需要转换格式,直接转发即可。

django_geetest_proxy/
├── manage.py
├── project/                  # Django 项目目录
│   ├── settings.py
│   ├── urls.py
└── geetest_app/              # 核心应用
    ├── views.py
    ├── static/               # 静态文件目录
    │   └── js/
    │       └── gt4.js        # 下载 GeeTest v4 SDK 脚本放这里
    └── templates/
        └── index.html
# views.py

import re
import requests
from django.http import HttpResponse
from django.shortcuts import render
from django.views.decorators.csrf import csrf_exempt


# 渲染首页
def index(request):
    CAPTCHA_ID = 'xxxxxxxxxxxxxxxxxx'
    context = { 'captcha_id': CAPTCHA_ID,}
    return render(request, 'index.html', context)


# 代理 /load
def geetest_load(request):
    url = 'https://gcaptcha4.geetest.com/load'
    params = request.GET.dict()
    headers = {
        # 直接复制抓包的headers
    }
    resp = requests.get(url, params=params, headers=headers, verify=False)
    text = resp.text
    return HttpResponse(text, content_type="text/javascript")    #JSONP 必须content_type="text/javascript"


# 代理 /verify
@csrf_exempt
def geetest_verify(request):
    url = 'https://gcaptcha4.geetest.com/verify'
    params = request.GET.dict()
    headers = {
        # 直接复制抓包的headers
    }
    resp = requests.get(url, params=params, headers=headers, verify=False)
    text = resp.text
    return HttpResponse(text, content_type="text/javascript")

前端:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>GeeTest Android-Proxy Demo</title>
  <!-- 引入极验 Web SDK(v4) -->
  {% load static %}
  <script src="{% static 'js/gt4.js' %}"></script>
</head>
<body>
  <button id="geetest-btn">点击验证 (Android 代理)</button>
  <div id="captcha-container"></div>

  <script>
    const CAPTCHA_ID = '{{ captcha_id }}';
    document.getElementById('geetest-btn').addEventListener('click', () => {
      initGeetest4({
        captchaId: CAPTCHA_ID,
        product: 'popup',
        protocol: window.location.protocol + '//',
        language: 'en',
        apiServers: [window.location.host]
      }, function (captchaObj) {
        captchaObj.appendTo('#captcha-container');
        captchaObj.onReady(function () {
          // 验证器加载完成
        });
        captchaObj.onSuccess(function () {
          const result = captchaObj.getValidate();
          alert('验证成功: ' + JSON.stringify(result));
        });
      });
    });
  </script>
</body>
</html>
urlpatterns = [
    path('', views.index, name='index'),
    path('load', views.geetest_load, name='geetest_load'),
    path('verify', views.geetest_verify, name='geetest_verify'),
]

if settings.DEBUG:# 如果gt4.js放在本地的话,需加上这句
    urlpatterns += static(settings.STATIC_URL, document_root=settings.STATICFILES_DIRS[0])

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值