【问题标题】:How Are Facebook Doing These Redirects?Facebook 如何进行这些重定向?
【发布时间】:2013-02-13 17:30:27
【问题描述】:

在过去 3 小时里,我遇到了一些关于 Facebook 登录程序的问题。

我访问了http://m.facebook.com(安装了 UA Spoofer 并设置为 Nokia Lumia User-Agent)并在监视标题的同时继续登录。我故意为我的帐户输入了错误的密码。

当按下登录时,它会向这个 URL 发送一个 POST 请求:https://m.facebook.com/login.php?refsrc=http%3A%2F%2Fwww.facebook.com%2F&refid=8 状态码返回一个 200 响应码。

然后立即向该 URL 发出 GET 请求:http://m.facebook.com/login.php?refsrc=http%3A%2F%2Fwww.facebook.com%2F&refid=8&e=1348022&email=frankthebutcher%40hotmail.com&signup_layout=layout%7Cbottom_clean%7C%7Cwider_form%7C%7Cprmnt_btn%7Cspecial%7C%7Cst%7Ccreate%7C%7Cheader_button%7C%7Chdbtn_color%7Cgreen%7C%7CFeb1&li=jFMuUdDWbmFhq8b-zAjEOHnE&_rdr

哪个网址显示密码不正确。

但是,重定向来自哪里?第一个 POST 请求的响应标头中没有任何内容,并且 JavaScript 未启用。

在 Chrome 上试用。很想知道它是如何做到的,这样我就可以相应地调整我正在开发的移动应用程序。

已解决:在我的移动应用程序中,我将 POST 请求发送到正确的 URL,但我使用的 URL 字符串被编码,这导致了问题。

【问题讨论】:

  • 可能是Location: 标头与第一个请求一起发回(您的浏览器在响应处理后运行)。
  • 我用细齿梳子梳理过头,里面什么都看不见。
  • 是的,很多移动应用程序都依赖于全球定位系统,因此它可以调整登录哪个服务器。
  • 我刚刚试了一下,按照我的想法做了:发回一个Location: http://m.facebook.com/login.php?refsrc=... 标头。
  • @BradChristie 啊,没注意到你编辑了你的评论。有趣,我一定会看看的。

标签: c# facebook google-chrome


【解决方案1】:

第一个 POST 请求发送回一个 Location 标头,它告诉浏览器先执行此请求并继续下一个请求。第二个请求只是浏览器,然后使用新的Location 提供并继续前进。

这是您从第一个 POST 响应中看到的内容:

但是,据我所知,这是302 (redirection: found) 响应,而不是200 OK。有些东西告诉我,您正在判断最终请求的响应标头,而不是中间重定向/切换。

【讨论】:

  • 对 HttpWebRequest (C#) 的 AllowAutoRedirect 属性是否跟随 Location 标头感兴趣?
  • @JamesJeffery: 既然是3xx地址,就跟随着(除非属性设置为false,或者已经超出跳数)
  • 当我监控标头时,我什至看不到位置标头。您是否使用较旧的 UA,因此它会加载 WAP 页面而不是常规的 Facebook 移动页面?
  • @JamesJeffery:您是否将其设置为“在导航时保留日志”? IIRC,chrome 清除页面浏览之间的日志,因此您只会看到最后一个请求(在这种情况下,是重定向的结果和页面上的任何资产)
  • 我设置了“在导航时保留日志”。
猜你喜欢
  • 2011-04-27
  • 1970-01-01
  • 2010-12-21
  • 2011-12-05
  • 2015-01-31
  • 1970-01-01
  • 1970-01-01
  • 2021-11-19
  • 1970-01-01
相关资源
最近更新 更多