获取验证码是单独的 url, 那么每次的请求怎么能与验证码同步

2018-08-20 16:36:12 +08:00
 wsds

This is an example link

这是获取验证码连接

没有任何参数,怎么确保每次的查询,才能对应上这个验证码呢?

4611 次点击
所在节点    Python
30 条回复
joyfun
2018-08-20 21:41:22 +08:00
@wangxiaoaer cookies 存的只是验证码的序号,key 呀,验证的是 value
aru
2018-08-20 21:52:03 +08:00
@wsds
1. 创建 session 对象
2. 请求一次查询页面
3. 请求验证码页面,识别出验证码
4. post 请求

每次请求验证码相当于刷新验证码,别重复请求!
xiangyuecn
2018-08-20 21:54:12 +08:00
围观楼上诸位大佬扯淡 (doge,极其普通的验证码也能扯上这么多 (滑稽

@wsds 你下载完了之后要保证后面访问页面的时候不会再次请求验证码这个地址,访问页面时候把验证码图片请求拦截干掉,验证码就不会变动了。。跟 session 什么的鬼东西一毛钱关系都没有,那是后端的玩意,跟请求跟页面有一毛钱关系,亏楼上还讨论的这么津津有味


或者你换一个方法,不要下载验证码,先访问页面,把验证码区域截个图然后获得验证码图片,还更简单粗暴可靠叼炸天
crab
2018-08-20 21:56:21 +08:00
@wsds 你只要明白一点,每一次请求验证码,cookies 都会更新一次回来,你只要输入最后一次请求看到的验证码以及提交正确的 cookies 就行。
t6attack
2018-08-20 22:05:27 +08:00
@wangxiaoaer 验证码可以放 cookie。只要保证 用户自己还原不出来、而服务端可以还原出来 就行了。discuz 里有个函数叫 authcode(),就能解决这个问题。
opengps
2018-08-20 22:06:38 +08:00
session 在客户端的表现,其实是 cookie 里存了一个 id,所以你只需要带上 cookie 信息就会被服务器识别成同一个回话
ooTwToo
2018-08-21 00:38:02 +08:00
简单,约定下 key,存 redis
agagega
2018-08-21 00:51:16 +08:00
session 可以用 cookie 存呀,加密就行了。Rails 默认就这么搞的
zsdroid
2018-08-21 11:20:39 +08:00
session_id 了解下
下载验证码时要同时保存 cookie,下次提交时要提交保存的 cookie
wsds
2018-08-21 11:26:51 +08:00
@zsdroid 我就是这种操作,仍不行啊
下载验证码到本地并获取 cookies
r = requests.get("获取验证码连接")
urllib.request.urlretrieve(r.url, "./a.jpg")
self.cookies = dict(r.cookies)
==========================
查询时,添加下载验证码的 cookies
r = requests.Session().post("查询链接",data=self.data, cookies=self.cookies)
print(self.data)
r.encoding = "utf-8"
print(r.text)

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/481486

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX