2009-12-13 108 views
1

我想创建我自己的个人登录网关到Gmail/Facebook /任何其他网站。在这个网关中,我输入了我的主用户名和密码,然后我可以选择登录(gmail/facebook/etc)而无需输入这些用户名,因为它们存储在服务器上。Gmail/Facebook没有用户名/密码 - PHP登录标题问题

我试图通过使用cURL来发送POST请求,并在常规登录期间使用在Firefox中发送的标题和发布数据来实现此目的。但是,这不适用于Facebook或Gmail。

有没有人试过这个或有一个想法,为什么这不起作用?

谢谢。

//编辑 我在想,它不起作用的问题在于,将curl请求发送到gmail的php服务器的IP地址与我的浏览器不同,因此, gmail服务器被反馈到浏览器,它仍然无法进行身份验证。

或者,我使用curl发送给Gmail服务器的cookie实际上是根据时间而改变的。

+0

你如何确定“它不工作”?既然你没有得到预期的结果,会发生什么?你如何处理从远程服务器得到的响应? – Quentin 2009-12-13 10:24:21

+0

你想在这里得到什么结果?您是否试图在登录到您的页面后完成该操作,您将自动在浏览器中登录到Gmail和Facebook?如果是这样,那么cURL不是正确的方法,因为你正在登录你的服务器而不是你的浏览器...... – 2009-12-13 12:44:22

+0

谢谢大卫我的意思是发送到gmail服务器的请求头不认证我登录。 gmail服务器提供的响应直接返回给浏览器。 – Tony 2009-12-13 13:20:54

回答

1

根据您对我的评论的回复,cURL对您的问题毫无用处。你需要使用你的服务(gmail,facebook,...)来验证你的浏览器,你现在正在做的是验证你的脚本(或你的服务器)。

你将不得不使用JavaScript来完成你想要的。如果您将服务的凭证存储在服务器上,那么一旦成功登录到您的网页,就会将其发送回客户端。然后,您可以创建一个隐藏的iframe,将“src”属性设置为所选服务的登录页面。加载iframe后,您可以将登录信息(用户名/密码)填入相应的字段并提交表单。完成此操作后,您应该可以使用您的服务。 可能还有一些其他的技术,但这是第一个想到的...

+0

所以你的意思是说以下操作将不起作用:首先使用我的用户/密码登录到我的脚本,一旦我的脚本检查了此信息,然后使用curl发送POST请求并使用存储的用户/密码将响应标题和数据传回给浏览器这是因为发布的请求是从服务器而不是浏览器发送的吗? – Tony 2009-12-13 14:20:36

+0

不能使用它。浏览器必须创建请求,以便它获取正确的cookie,并且不能为其他域创建cookie – 2009-12-13 14:33:39

+0

感谢您的回复。所以关键在于cookie的域特定属性。 – Tony 2009-12-13 14:51:43

0

这不一定是可行的,Gmail和Facebook可能会做非常简单的检查来查看引荐者是谁以及何时来自您的网站而不是他们自己的登录页面拒绝登录。这是基本的安全检查。

你需要看看他们的api,看看你是否可以做任何事情,或者你可以使用javascript和firefox插件将你的用户名和密码写入webform然后提交表单,有点黑客但是可能会做你想做的。

+0

感谢您的回复。我了解你的选择。不过,我真正想要做的是,我想登录到Gmail,而无需从任何计算机输入真实的用户名/密码。 此外,我相信登录Gmail/Facebook的基本原理是发送正确的请求标题和发布数据。我认为它仍然是可行的? – Tony 2009-12-13 09:11:59

0

没有理由为什么你试过的cURL方法不能使用正确的头文件。玩像digg.com这样的网站时,我发现我需要一个有效的用户代理标题,当然还有一个适当的REFERER网址,如果整体效果最好,请继续使用卷曲技术。使用一个http头文件加载到Firefox来查看你发送给gmail的头文件,然后完全伪造它们。

+0

感谢您的回复。问题在于请求标头是由PHP发送的,我只能看到Firefox上的响应请求。该响应实际上来自登录页面,该页面要求我登录,因为我发送的标题不正确。所以它有点难以理解为什么这不起作用。 – Tony 2009-12-13 09:25:28

+0

我的意思是使用FF来正常登录一次,看看请求和响应,复制该文件并尝试在cURL中模拟这些头文件 – 2009-12-13 09:28:49

+0

感谢这就是我所做的。我从ff的LiveHttpHeader插件中复制了请求标头,但是这组标头看起来并没有使事情正确。我被卡住了:( – Tony 2009-12-13 09:32:31

0

试着用萤火虫找出答案的回应,它应该总是给你最好的领先。

我没有看到它无法工作的原因,我阅读了我的Gmail和Curl的分析。

+0

感谢您的回复。问题是请求标头是由PHP发送的,我只能在Firefox上看到响应请求。请问是否需要发送特殊标头?我怀疑可能是浏览器错过了一些cookie发送后,PHP发送请求? – Tony 2009-12-13 09:26:40

+0

你应该检查这个资源:http://www.askapache.com/webmaster/login-google-analytics.html应该作为一个很好的领导 – 2009-12-13 09:39:27

0

您是否配置了curl来接受和存储cookie?通常,一旦您通过在线服务进行身份验证,它就会向您发送一个cookie形式的安全令牌,您可以随后发送每个请求以验证您的授权。