首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python 学习手册
Python Cookbook
Python 基础教程
Python Sites
PyPI - Python Package Index
http://www.simple-is-better.com/
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
V2EX  ›  Python

对每请求一次就要输入一个验证码的接口,怎么实现跳过验证码啊?

  •  
  •   wsds · 47 天前 · 1672 次点击
    这是一个创建于 47 天前的主题,其中的信息可能已经有所发展或是发生改变。

    headers 是直接全部从浏览器复制的,每次请求,都要输入一个验证码,而且这个验证码是个 post 里边的参数verify_code,破不了吗? 27QlKr.png

    import os
    import requests
    import signparam
    import json
    
    
    class GetHouse:
        def __init__(self):
            self.base_url = "http://www.cszjw.net/"
            self.headers = signparam.headers1
    
        def signedcontract(self):
            r = requests.post(self.base_url+"signedcontract",
                              data=signparam.data1, headers=signparam.headers1)
            print(r,r.text)
    
    
    if __name__ == '__main__':
        GetHouse().signedcontract()
    
    
    #signparam.py
    data1 = {"area": "cs", "idcard": "43092319880305381x","_token": "3L29SwFbeVsKOcUSkXSweoy07qeGaxd9XIsXajd86", "htbh": "xx1701932406", "verify_code": "jcr6"}
    
    headers1 = {"Accept": "application/json, text/javascript, */*; q=0.01",
                "Accept-Encoding": "gzip, deflate",
                "Accept-Language": "zh-CN,zh;q=0.9,en;q=0.8,ja;q=0.7",
                "Connection": "keep-alive",
                "Content-Length": "116",
                "Content-Type": "application/x-www-form-urlencoded; charset=UTF-8",
                "Cookie": "XSRF-TOKEN=eyJpdiI6InNUaVI0Q2RuMW1ra3Q3amcyekFkbXc9PSIsInZhbHVlIjoiMGwydU54WWh2WFJpTmhNNTNpM0VrXC9jdTJVZkozeVwvN0JValhTWkRmYVZVa3lacE1GU2tzM0VEXC9wTmFqWGdaZGJUeXFXRE1iaVFyWEZIZFBmUm01RUE9PSIsIm1hYyI6ImRjODM0YzBkMmY5ZmU5NDVjYmViNTc4OWU2NTE3Nzg2N2I3YmJkODIyNTAzNGZiYTkxOWVlNzVjYjIyOWJiOTcifQ%3D%3D; laravel_session=eyJpdiI6IjcyVlljWEdJTmI3V1hVNEFyMFJ5S0E9PSIsInZhbHVlIjoieGdVcDdQdXNIMDk2K3lvNGxlblBLVndFaEJvNXA1b1BZNjRWN05DcVB6T0UzS0M4akFkeWJhR0F4OUY2aXZyV205UzU5cHRlWjVZTlFZSUxtNHp3SFE9PSIsIm1hYyI6ImI5ZjgxZDRhYmFmNWJlYWE3MWE3YmUxYzdmYTcyYWY5OWVmZmJmMjMxZGE2ZTU2NjM5MTNkNWRiNjFhMDc2NTkifQ%3D%3D",
                "Host": "www.cszjw.net",
                "Origin": "http://www.cszjw.net",
                "Referer": "http://www.cszjw.net/signedcontract",
                "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.139 Safari/537.36",
                "X-Requested-With": "XMLHttpRequest"}
    
    

    ======output==== 27QNFX.png

    第 1 条附言  ·  46 天前

    27Yhmv.png

    第 2 条附言  ·  45 天前

    搞不定啊,卧槽了

    31 回复  |  直到 2018-05-10 16:12:03 +08:00
        1
    yestodayHadRain   47 天前
    两种方式,1、越过这个接口直接调用接口后面的逻辑层 2、让后端添加白名单(写一个固定的验证码,请求的时候写死),还有一种方式是通过图样识别 不过貌似意义不大?
        2
    wsds   47 天前
    @yestodayHadRain
    这不是自家公司网站啊,我只是想调用他查询我想要的东西结果而已,
    现在首先的问题是,请求都请求不通啊,直接被 csrf 拦截了
        3
    3a3Mp112   47 天前
    这个验证码并不复杂,可以考虑识别破解。
        4
    alioth310   47 天前
    身份证号和合同编号在代码里泄露了 @Livid
        5
    cnTangLang   47 天前
    买通负责的程序员给你一个单独的接口。或者你能做验证码识别。否则这都能简单让你跳过,银行的钱还不都是你的了。
        6
    wsds   47 天前
    @alioth310 额,改不了了,法克
        7
    wsds   47 天前
    @cnTangLang 关键这个就是一个查询购房合同的页面而已,不至于跟银行比吧,都不用登录的
        8
    domty   47 天前
    ocr
        9
    huiyifyj   47 天前 via Android
    @wsds 你这就😂😂快叫 livid 删贴吧。
        10
    chinafeng   47 天前
    验证码识别了解一下
        11
    wsds   47 天前
    @huiyifyj 先帮我解决了问题,再删吧,都发出来了已经,要收集,估计也已经被有心人给收集了吧
        12
    exkernel   47 天前
        13
    yestodayHadRain   47 天前
    @wsds 那就图样识别,验证阿本来就是为了防止你这种操作的
        14
    Leigg   47 天前 via Android
    这个码简单,ocr 搞定
        15
    wsds   47 天前
    @Leigg 第三方库吗?免费?
        16
    AlphaTr   47 天前
    OCR 识别吧,看起来处理应该还算简单
        17
    omph   47 天前
    现在 AI 挺火的
        18
    alvin666   47 天前 via Android
    @wsds ocr 是光学字符识别,准确率要看验证码复杂度,一般来说网站的程序员不会这么 zz 让别的人跳过验证码,第三方打码平台也可以考虑一下
        19
    gclove   47 天前
    写 python 的连这么简单的验证码识别都解决不了 ?
        20
    wsds   47 天前
    @gclove 小白一个啊
        21
    jalja27   47 天前 via Android
    之前找了个 tensorflow 代码,训练了一个模型,识别验证码,再写个接口调用。当然主要是好玩
        22
    gengfire   47 天前
    google ocr 了解一下,这么规整的验证码,很容易识别的
        23
    vacker   46 天前 via Android
    看来 laravel 的 csrf 还是比较厉害
        24
    leoleoasd   46 天前
    先 get 一下获得 cookie 里的 csrf token 啊 正常的请求肯定是需要用的啊
        25
    leoleoasd   46 天前
    前端页面是怎么获取 cstf token 的你也怎么获取不就得了
        26
    wsds   46 天前
    @leoleoasd 没有获取 cstf token 请求,很奇怪 http://szjw.changsha.gov.cn/ywcx/
        27
    farverfull   46 天前
    这个接口,token 和验证码图片都有: http://www.cszjw.net/preselllicence
        28
    leoleoasd   45 天前
    @wsds http://www.cszjw.net/preselllicence 这里的 html 里能获取到 csrf
        29
    wsds   45 天前
    @leoleoasd 搞不定
        30
    leoleoasd   45 天前
    @wsds 为什么搞不定??header 里就有!正则都能过滤出来
        31
    wsds   45 天前
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   鸣谢   ·   1765 人在线   最高记录 3541   ·  
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.1 · 18ms · UTC 12:52 · PVG 20:52 · LAX 05:52 · JFK 08:52
    ♥ Do have faith in what you're doing.
    沪ICP备16043287号-1