Heim  >  Artikel  >  Backend-Entwicklung  >  curl 模拟登录 发现cookie下发的url总是变化

curl 模拟登录 发现cookie下发的url总是变化

WBOY
WBOYOriginal
2016-06-23 14:03:121020Durchsuche

第一步,get方式打开首页;第二步,点首页上的登录按钮,会出来登录框,post数据完成登录。
第二步需要第一步时产生的一个cookie值。
而第一步访问的是首页,但是会自动跟着请求近10个url.这些url很多是首页载入的js随即自动发出的。
而这个cookie正是这些页面中的某个页面写入客户端的。
难不成想得到这个cookie要模拟10几个页面?
而且发现这些页面也有变化,有的url会在这次出现,在下次打个首页时又不出现了。总之就是,不知道这个cookie在某次访问时是通过哪个页面下发的。

curl好像不能像浏览器那样,自动处理第一个请求页面下的js请求的新页面吧?
如果说要一个个页面去模拟,好像又不大可能。

我在想,用curl请求一个页面,这个页面自动发出的后续请求,curl应该要自动处理才是,这样,所有的cookie都能获得。但实现好像不是这样,curl只能一个url一个url的请求。
是不是,像这种情况,curl就无能为力了?毕竟curl不是浏览器。
大家提示提示。如果curl不能对付,那么有什么言语能实现?


回复讨论(解决方案)

清干净所有cookie 缓存 然后 浏览这个页面 抓包 看看具体都有什么url.再重复 直到抓出产生cookie的url.
访问产生cookie的url+访问目的页面.

这是个烦琐的过程,curl不是个智能机器人,他仅仅是个支持多种协议的传输工具。

清干净所有cookie 缓存 然后 浏览这个页面 抓包 看看具体都有什么url.再重复 直到抓出产生cookie的url.
访问产生cookie的url+访问目的页面.

这是个烦琐的过程,curl不是个智能机器人,他仅仅是个支持多种协议的传输工具。
多谢。cookie肯定是每次请求前都清除了的。只是发现第一个载入的页面会有许多js代码,然后js代码会发出其它请求,而要用的cookie就是在这些请求中下发的。还有这些js产生的url会带一些个复杂变量,估计得造出这种url还得看明白那些操蛋的js代码。看来传说中强大的curl其它作用还是很小的,处理get请求还是可以,要真来拿来模板post,那有相当难度了。

curl 会执行 js 吗?
那些专业的浏览器都还有兼容性问题呢

遇到这样的问题我一般都pass,不是做不了,是成本问题

解决方案两个:
1.安装一个js引擎(目前V8较强大),取得首页面后提取js部分交给js引擎运行
2.先手动找出10个请求的url,即使随机也是有一定规律的,确认哪个产生所需cookie,针对这个url请求并记录cookie,简单说就是两次操作,请求cookie在前,post在后

方法1还有V8的学习成本,我基本不考虑;方法2筛选时间成本大,我宁愿手动登录一次,抓登录后的全部cookie给后续程序用……

说到底是价值取舍问题,如果要登录1000次,我会花时间去弄这个
如果只是登陆一次,再得到后面的1000个页面,那花时间在搞登录上面就很不值了

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn