首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在我的站点中嵌入一个来自另一个站点的CAPTCHA,手动解析它,发送回原始站点并获取令牌?

问如何在我的站点中嵌入一个来自另一个站点的CAPTCHA,手动解析它,发送回原始站点并获取令牌?
EN

Stack Overflow用户
提问于 2021-07-22 09:56:14
回答 1查看 237关注 0票数 0

其意图不是自动解决验证码问题。我网站的每个用户都必须解析CAPTCHA。

其意图是使用来自另一个站点的免费数据。这些数据是公开的和免费的,但是为了避免大量的请求,它们受到CAPTCHA的保护。

这就是我做过但不起作用的事情:

  1. 创建一个管理请求并将请求转发到原始站点的proxy.php。
  2. 从原始请求(CAPTCHA的请求)复制所有标头,并将它们添加到代理中。因此,这是解析CAPTCHA的形式:

xxx是我的站点,example.com是我想解析captcha并获取数据的站点:

代码语言:javascript
复制
<img id="imgCaptcha" src="https://xxx/proxy.php?curl=https://example.com/Captcha&type=image&lang=it" style="width:200px;">

<input type="text" id="captcha">

<button type="button" id="btn_resolve">Resolve</button>
  1. 单击按钮,发送输入文本并检查是否已解决:

xxx是我的站点,example.com是我想解析captcha并获取数据的站点:

代码语言:javascript
复制
    $('#btn_resolve').on('click',function(e) {
       e.preventDefault();
       var captcha = $('#captcha').val();

       $.get('https://xxx/proxy.php?https://example.com/Captcha&type=check&captcha='+captcha, function(data, status) {
          alert(JSON.stringify(data));
       });
   });

结果总是{"result":false,"token":"","message":null}

我认为问题在于我在proxy.php中设置的JSESSIONID,但似乎是出于这个动机从Chrome过滤出来的:“这个cookie被阻塞了,因为它的路径与请求url的路径不完全匹配或者是一个超级目录”。

老实说,我不清楚我是否能做到这一点,以及如何做到这一点:似乎最后版本的Chrome屏蔽了一些coockies。我怎样才能绕过Chrome过滤器使用PHP CURL来完成这个任务呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-08-03 10:16:43

我解析了它,在proxy.php文件中添加了所有需要的cookie。

Proxy.php使用curl转发请求。对于使用CURL命令softius代理PHP CORS的跨域代理来说,这是一个很好的起点。

然后,您可以在请求CAPTCHA映像之后读取JSESSIONID,并将其转发到代理,并将它和其他文件添加到请求中:

代码语言:javascript
复制
header('Set-Cookie: cross-site-cookie=name; SameSite=None; Secure');
header('Set-Cookie: XSRF-TOKEN=XXXXX');
if (isset($_REQUEST['jsessionid'])) {
    setcookie("JSESSIONID", NULL, 0, "/");
    header('Set-Cookie: JSESSIONID='.$_REQUEST['jsessionid']);    
} 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68482831

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档