非常高兴有人帮助我解决以下问题,您将看到我想创建一个存储外部页面帐户的站点,以便当他们在我的应用程序中输入用户名和密码时,该站点即可实现登录在外部网站中,然后重定向页面如何登录用户。我的问题是,有可能这样做吗?我想用枪口试一下,但是不能,然后尝试了goutte,但是遇到了一个错误,没有检测到田野,该怎么办?谢谢
答案 0 :(得分:0)
因此,用户将需要与您共享其用户名和密码,并且您将把用户名和密码存储在数据库中,并且该用户名和密码必须是纯文本或以易于转换回纯文本的方式。这是一个大红色的旗子。
如果出于某些正当理由您要这样做,我建议您在Guzzle中使用CookieJar。您可以使用用户凭据发布登录信息,并存储生成的cookie,然后将其发送给标头以及对该用户的任何后续请求。
一些粗略的代码可以帮助您:
$client = new GuzzleHttp\Client;
$filename = $somePath . '/cookies.json';
$jar = new GuzzleHttp\Cookie\FileCookieJar($filename);
// Login
$url = 'http://some_login_url';
$body = [
'user' => $someUser,
'pass' => $somePassword
];
$response = $client->post($url, ['cookies' => $jar, 'body' => $body]);
// Make sure the response is valid here
$jar->save($filename);
// Retrieve a private page for a user
$url = 'http://private_page_url';
$response = $client->get($url, ['cookies' => $jar]);
// Make sure the response is valid here
$html = (string) $response->getBody();
// Do scrapy stuff with HTML
很显然,这需要一些工作才能使其有用。