V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
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
wuyuchenshr
V2EX  ›  Python

Python 签到网站,如果调用 COOKIES,能用多久是不是取决于 COOKIES 的有效期

  •  
  •   wuyuchenshr · 2020-05-03 20:17:55 +08:00 · 4525 次点击
    这是一个创建于 1658 天前的主题,其中的信息可能已经有所发展或是发生改变。
    1.我想用 python 签到一个网站,因为有滑动验证,我就想直接复制 cookies 来登陆签到,请问我这个程序能用多久,是不是取决于这个 cookies 的有效期?

    2.如果我想长期有效,是不是必须得通过账号密码登陆的方式来获取 cookies ?
    15 条回复    2020-05-07 19:37:48 +08:00
    hiccup00
        1
    hiccup00  
       2020-05-03 20:39:48 +08:00 via Android
    借楼求个有验证码的网站登录并签到的方法~
    ClericPy
        2
    ClericPy  
       2020-05-03 21:07:22 +08:00
    1. 先定时访问, 判断出 Cookie 实际有效期. 在 Cookie 字段里的 expire 或者 max age 是给浏览器看的, 有时候不是服务端那边的, 所以不保险.

    2. 长期有效方面, 如果你能用 Headless 或者正常的方式成功登录, 那只要有一步验活请求, 就知道 Cookie 失效时候刷新 Cookie 就好了.

    验证码方面大部分都用的机器视觉那些库做的, 滑动验证码我在 Headless 里用 dispatch Event 的方式拖拽每次都被反爬, 用 pyautogui 去拖拽就不会, 头疼...
    imdong
        3
    imdong  
       2020-05-03 21:13:08 +08:00
    回楼主:很多 Cookies 过期是客户端控制,所以如果保存 Cookies 使用,弄不好就不会过期了。
    但是有些网站会识别 不同的浏览器 / 不同的 IP 会强制退出,所以具体情况具体分析,
    原则上,楼主的思路没错,直接保存 Cookies 使用,能解决绝大多数场景。

    回 @hiccup00 #1:创建 web 服务器,模拟正常请求获取验证码以后,使用 base64 img 返回给页面(一般会把对应的 cookies 也回给客户端),
    浏览器端手动输入验证码后,提交给服务器,服务器继续后续的登录请求。
    此方法不适用 拖动,点击类新型验证码。

    另外,曾设想过另一个想法(中间人攻击):
    服务器开启 http 代理,浏览器设置代理登录,登录成功后,服务器端窃取请求,即可。
    jugelizi
        4
    jugelizi  
       2020-05-03 21:24:39 +08:00
    实践出真知
    你既然经常用这个网站 可以尝试修改下浏览器中的 cookie 有效期
    有的网站 jwt 方案的几乎永久有效
    不排除服务器重启之类清空服务端登录信息的
    yukiloh
        5
    yukiloh  
       2020-05-03 21:38:10 +08:00
    我抓 smzdm 的登陆给看晕了,后来索性不登陆了
    luckyswag
        6
    luckyswag  
       2020-05-03 23:41:54 +08:00
    https://qiandao.today/
    crab
        7
    crab  
       2020-05-04 06:39:54 +08:00
    要长期肯定只能账号密码正常登陆,也就是失效后自动登陆。用 cookies 取决网站那边,有的持续访问会一直保持登陆状态,有的就不行。
    crella
        8
    crella  
       2020-05-04 10:15:12 +08:00 via Android
    水木社区的登录 cookie 我也是搞不清什么情况;浏览器复制 curl 命令,然后用 curl 发送,照样返回访客模式的 set-cookie,估计登录的时候有 js 动态计算一些东西。
    SenLief
        9
    SenLief  
       2020-05-04 10:35:56 +08:00
    cookie 长期应该不容易,一般还是要写模拟登录程序的。
    Virace
        10
    Virace  
       2020-05-04 12:04:10 +08:00 via Android
    觉得滑动验证不好过!如果自己用,其实可以再签到失败给自己发个邮件!手动更新 cookie,这也不乏是一种方法!
    cnzjl
        11
    cnzjl  
       2020-05-04 13:37:18 +08:00 via Android
    只能定时去刷新 cookie
    loli
        12
    loli  
       2020-05-04 14:43:41 +08:00
    @luckyswag
    我也有在用这个,好像也是 v2 老哥自建还开源了的,已经持续几年了吧。
    这里的 cookies 有效期我也奇怪,我电脑本地的 cookies 都失效了网站上的还能签到。
    还有就是好多地方都有防这个的,比方说地址带特征码的不知道怎么解决,formhash=e1ad8d3d 这种
    Qiled
        13
    Qiled  
       2020-05-05 23:08:58 +08:00
    @loli 你这个看着就是 DZ 论坛的。通常访问某个页面可以获得 formhash
    vagrantear
        14
    vagrantear  
       2020-05-07 16:13:51 +08:00   ❤️ 1
    @loli 主页有的,写个正则获取一下就行
    loli
        15
    loli  
       2020-05-07 19:37:48 +08:00
    @vagrantear
    请问下文档在哪呀? github 翻了半圈没找到里面说的文档在哪。
    在被关闭的 issues 里找到了个帖子,看了半天还是没明白这正则是什么格式。
    我只明白最基础的正则
    比方说 \?formhash=(.*?)\\ 匹配 html?formhash=e1ad8d3d\
    我这样写还是错的,匹配不到。
    他里面的例子有好多其他参数?
    比方说 redeem\?once=(.*?)' 我翻了下只匹配 \?once=(.*?)' ,redeem 好像是特殊参数。
    还有一些看都看不懂。。
    比方说
    type="hidden" value="(.*?)" name="once"
    type="password"\sclass="sl"\sname="(.*?)"
    我连要匹配的是什么都不知道,更不要说哪些是参数哪些是匹配词了。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1438 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 17:37 · PVG 01:37 · LAX 09:37 · JFK 12:37
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.