某宝滑块验证码的解决方法

遇到某宝商品详情的滑块验证码的解决方法和接口
最近更新时间:2020年06月25日,*大家都知道,淘宝/天猫的滑块验证机制十分严,而很多时候,没办法高效的拿到需要的内容,因为在高并发采集下很容易就出现滑块验证,让人很无解,正好,最近没什么事儿,上班的公司也遇到这方面的需求,让我负责解决这个问题,刚开始绞尽脑汁各种尝试和捣鼓,始终没有解决得了,搞了好几天,都没有进展; 然后各种网上资料查询,最终还是不负努力,找到更好的解决方案,在高并发请求下实现了完全绕过,实现更好的接口体验,集成起来也简单了很多,下面就说说封装好的部分接口说明,满足了很多高并发的业务场景。

注意 此接口是通过算法优化处理,并非模拟拖动验证码。PC、手机淘宝均可用,因为是Python写的接口,操作起来也很方便,。

接口1:生成淘宝UA参数
传入参数:验证url,淘宝umtoken,useragent

返回示例:{ “result” : “098#E1hvLpvxvkQvn9Ck…vEvUHpZVvvvvphmzvpvZuEuUksjDqKde/NkX/IyBmps/l/O=” }

接口2:人工处理

传入参数:图片base64字符串

返回示例:{ “result” : “7BXN” }

下面简单分享一段GO语言的并发请求示例:

package main

import (
    "fmt"
    "io"
    "io/ioutil"
    "net/http"
    "time"
)

func main()  {
    start :=time.Now()
    ch :=make(chan string)

    var urls = []string{"https://item.taobao.com/item.htm?id=618030061954",
        "https://item.taobao.com/item.htm?id=618030061954",
        "https://item.taobao.com/item.htm?id=618030061954",
        "https://item.taobao.com/item.htm?id=618030061954",
    }
    for _,url:=range urls[:len(urls)]{
        go fetch(url,ch)
    }

    for range urls[:len(urls)]{
        fmt.Println(<-ch)
    }
    fmt.Printf("%.2fs elapsed \n",time.Since(start).Seconds())

}

func fetch(url string,ch chan<- string){
    start:=time.Now()
    res,err:=http.Get(url)
    if err!=nil{
        ch <- fmt.Sprint(err)
        return
    }
    nbytes,err:=io.Copy(ioutil.Discard,res.Body)
    if err!=nil{
        ch <- fmt.Sprintf("while reading %s:%v",url,err)
        return
    }
    secs:=time.Since(start).Seconds()
    ch <- fmt.Sprintf("%.2fs %7d %s",secs,nbytes,url)

你可能感兴趣的:(某宝滑块验证码的解决方法)