最近在做一款 V2EX Android App ,正在实现登录功能。
已经有不少优秀的 V2EX 客户端开源项目,我经常参考的如:
Android: https://github.com/v2er-app/Android
iOS: https://github.com/Finb/V2ex-Swift
通过查看他们源码得知,模拟登录的步骤如下:
现在卡在第 3 步,现象是:即使我十分确定验证码正确的情况下,还是会得到提示「验证码错误」的情况。
经过反复对比实现方式,我比较确定自己的代码的实现是没问题的,有一些细节比如添加一些额外的 header 之类的我也做了,但是还是出现这个问题。我自己的一些猜测的可能:
折腾一两天,现在有点黔驴技穷的感觉,另外登录次数多了还会导致 IP 被风控,导致调试都是谨小慎微。
不知道 v 友有没啥好的想法?
1
wowo243 38 天前
没开发过客户端,但是可以提供个思路:
开抓包工具,分别对已有开源代码和问题代码,然后对比抓包工具中各个请求的参数与返回。 实际上就是比对流程的差异,排查问题。 另外,个人经验,有的时候问题解决不了可以先放一放,等到放松下来转换个思路说不定就解决了。 |
2
lawler 38 天前
我刚巧在两年前也开发过 V2EX 模拟登录的功能,可以非常确认是你的代码问题。
因为模拟登录步骤所描述的逻辑没有问题。 |
3
SillyAdam 38 天前
我看了一下,图片验证码的路径是 `/_captcha?now=...`。这个 `now` 后面跟的应该是时间戳,用来避免浏览器缓存图片的。实际上验证码的信息应该是存在 session / cookie 里面的。我清空 cookie 之后访问验证码,看到服务器有发一个新的 cookie 叫 `PB3_SESSION`。校验的时候应该是要把这个 cookie 带上才行。
|
4
Blanke 38 天前
带上 cookie 了吗
|
5
finab 38 天前
我依稀记得第二次请求登录页会导致上一次的验证码和 once 失效,可以排查下你是不是重复请求登录页面了。
|
6
wnpllrzodiac 38 天前 via Android
每天签到脚本工作正常
|
7
maninfog OP |
8
oneisall8955 38 天前
Postman 走一遍
|
9
abu 38 天前
|
11
NoOneNoBody 38 天前
v2ex 的 token ,跟 css 有关
别问我怎么发现的 |
12
wnpllrzodiac 36 天前
@wnpllrzodiac 发现不正常了。。。。
cookie 里面的 value 带 " 和 | 是合法字符的吗? |
13
maninfog OP @wnpllrzodiac 啥问题? 我理解 cookie 里面有" 和 | 是没问题的
|
14
wnpllrzodiac 36 天前
@maninfog 查下来发现 firefox 里面 f12 复制 curl 命令到 linux 测试正常,能返回登陆页面。到 windows 端就不能返回登陆的页面。windows 的 bat 不支持 -H 'xxx' 单引号。只能用双引号,但是这样;|就需要处理,但是 firefox 好像也没有正确的处理。
cf worker 做个自动签到功能还是挺好的。 |
15
Xushet 34 天前
给个项目地址我可以点点 star ,顺便求一个支持 Android 默认链接打开的功能,找了几个 v2 客户端都没有
|