使用curl登录并移动到另一个页面 [英] Login with curl and move to another page

查看:93
本文介绍了使用curl登录并移动到另一个页面的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我尝试使用CURL访问网站中的一个网页,但它需要登录,我尝试了代码登录并且成功。

 <?php 

$ user_agent =Mozilla / 5.0(X11; Linux i686; rv:24.0)Gecko / 20140319 Firefox / 24.0 Iceweasel / 24.4.0;
$ curl_crack = curl_init();

CURL_SETOPT($ curl_crack,CURLOPT_URL,https://www.vininspect.com/en/account/login);
CURL_SETOPT($ curl_crack,CURLOPT_USERAGENT,$ user_agent);
CURL_SETOPT($ curl_crack,CURLOPT_PROXY,183.78.169.60:37899);
CURL_SETOPT($ curl_crack,CURLOPT_PROXYTYPE,CURLPROXY_SOCKS5);
CURL_SETOPT($ curl_crack,CURLOPT_POST,True);
CURL_SETOPT($ curl_crack,CURLOPT_POSTFIELDS,LoginForm [email] = naceriwalid%40hotmail.com& LoginForm [password] = passwordhere& ylog1 =& toploginform [rememberme] = 0);
CURL_SETOPT($ curl_crack,CURLOPT_RETURNTRANSFER,True);
CURL_SETOPT($ curl_crack,CURLOPT_FOLLOWLOCATION,True);
CURL_SETOPT($ curl_crack,CURLOPT_COOKIEFILE,cookie.txt); //放置cookie文件的完整路径(如果你想要写它)
CURL_SETOPT($ curl_crack,CURLOPT_COOKIEJAR,cookie.txt); //放置cookie文件的完整路径,如果你想它写它
CURL_SETOPT($ curl_crack,CURLOPT_CONNECTTIMEOUT,30);
CURL_SETOPT($ curl_crack,CURLOPT_TIMEOUT,30);

$ exec = curl_exec($ curl_crack);
if(preg_match(/ ^ you are logged | logout | successfully logged $ / i,$ exec))
{
echoyoooha
}

?>

现在我面对的唯一问题就是我不想被重定向到登录页面,我想重定向到此页面 http://example.com/buy ,我如何 如果你想去 / buy 登录后,只是使用相同的curl句柄并发出另一个请求该页面。 cURL将在句柄持续期间保留Cookie(以及对于后续请求,因为您将它们保存到文件中并使用cookie jar读取它们)。



例如:





  $ user_agent =Mozilla / 5.0(X11; Linux i686; rv :24.0)Gecko / 20140319 Firefox / 24.0 Iceweasel / 24.4.0; 
$ curl_crack = curl_init();

CURL_SETOPT($ curl_crack,CURLOPT_URL,https://www.vininspect .com / en / account / login);
CURL_SETOPT($ curl_crack,CURLOPT_USERAGENT,$ user_agent);
CURL_SETOPT($ curl_crack,CURLOPT_PROXY,183.78.169.60:37899);
CURL_SETOPT($ curl_crack,CURLOPT_PROXYTYPE,CURLPROXY_SOCKS5);
CURL_SETOPT($ curl_crack,CURLOPT_POST,True);
CURL_SETOPT($ curl_crack,CURLOPT_POSTFIELDS,LoginForm [email] = naceriwalid%40hotmail.com& LoginForm [password ] =
CURL_SETOPT($ curl_crack,CURLOPT_FOLLOWLOCATION,True);
CURL_SETOPT($ curl_crack,CURLOPT_RETURNTRANSFER, );
CURL_SETOPT($ curl_crack,CURLOPT_COOKIEFILE,cookie.txt); //放置cookie文件的完整路径(如果你想要写它)
CURL_SETOPT($ curl_crack,CURLOPT_COOKIEJAR,cookie.txt); //放置cookie文件的完整路径,如果你想它写它
CURL_SETOPT($ curl_crack,CURLOPT_CONNECTTIMEOUT,30);
CURL_SETOPT($ curl_crack,CURLOPT_TIMEOUT,30);

$ exec = curl_exec($ curl_crack);
if(preg_match(/ ^ you are logged | logout | successfully logged $ / i,$ exec))
{
$ post = array('search'=>'keyword ','abc'=>'xyz');

curl_setopt($ curl_crack,CURLOPT_POST,1); // change back to GET
curl_setopt($ curl_crack,CURLOPT_POSTFIELDS,http_build_query($ post)); // set post data
curl_setopt($ curl_crack,CURLOPT_URL,'http://example.com/buy'); //为下一个请求设置url

$ exec = curl_exec($ curl_crack); //使请求与当前登录会话在同一句柄上进行购买
}

是使用PHP和PHP的一些其他示例。 cURL发出多个请求:



如何使用Curl和SSL和Cookie登录(链接到多个其他示例)



< a href =http://stackoverflow.com/questions/13241344/grabbing-data-from-a-website-with-curl-after-logging-in/13241393#13241393>在记录后使用cURL从网站抓取数据in?



使用PHP和cURL登录时无法使用



使用PHP和Curl登录Google,Cookie已关闭?



PHP Curl - Cookie问题

p>

I'm trying to access one page in a website with CURL, however it needs to be logged in i tried the code to login and it was successful

<?php

    $user_agent       = "Mozilla/5.0 (X11; Linux i686; rv:24.0) Gecko/20140319 Firefox/24.0 Iceweasel/24.4.0";
    $curl_crack = curl_init();

    CURL_SETOPT($curl_crack,CURLOPT_URL,"https://www.vininspect.com/en/account/login");
    CURL_SETOPT($curl_crack,CURLOPT_USERAGENT,$user_agent);
    CURL_SETOPT($curl_crack,CURLOPT_PROXY,"183.78.169.60:37899");
    CURL_SETOPT($curl_crack,CURLOPT_PROXYTYPE,CURLPROXY_SOCKS5);
    CURL_SETOPT($curl_crack,CURLOPT_POST,True);
    CURL_SETOPT($curl_crack,CURLOPT_POSTFIELDS,"LoginForm[email]=naceriwalid%40hotmail.com&LoginForm[password]=passwordhere&toploginform[rememberme]=0&yt1=&toploginform[rememberme]=0");
    CURL_SETOPT($curl_crack,CURLOPT_RETURNTRANSFER,True);
    CURL_SETOPT($curl_crack,CURLOPT_FOLLOWLOCATION,True);
    CURL_SETOPT($curl_crack,CURLOPT_COOKIEFILE,"cookie.txt"); //Put the full path of the cookie file if you want it to write on it
    CURL_SETOPT($curl_crack,CURLOPT_COOKIEJAR,"cookie.txt"); //Put the full path of the cookie file if you want it to write on it
    CURL_SETOPT($curl_crack,CURLOPT_CONNECTTIMEOUT,30);
    CURL_SETOPT($curl_crack,CURLOPT_TIMEOUT,30);  

    $exec = curl_exec($curl_crack);
    if(preg_match("/^you are logged|logout|successfully logged$/i",$exec))
    {
        echo "yoooha";
    }

?>

Now the only problem I'm facing let's say that i don't want to be redirected to the logged in page, i want to be redirected to this page http://example.com/buy, how i can do that in the same code?

解决方案

If you want to go to /buy after you log in, just use the same curl handle and issue another request for that page. cURL will retain the cookies for the duration of the handle (and on subsequent requests since you are saving them to a file and reading them back with the cookie jar.

For example:

$user_agent       = "Mozilla/5.0 (X11; Linux i686; rv:24.0) Gecko/20140319 Firefox/24.0 Iceweasel/24.4.0";
$curl_crack = curl_init();

CURL_SETOPT($curl_crack,CURLOPT_URL,"https://www.vininspect.com/en/account/login");
CURL_SETOPT($curl_crack,CURLOPT_USERAGENT,$user_agent);
CURL_SETOPT($curl_crack,CURLOPT_PROXY,"183.78.169.60:37899");
CURL_SETOPT($curl_crack,CURLOPT_PROXYTYPE,CURLPROXY_SOCKS5);
CURL_SETOPT($curl_crack,CURLOPT_POST,True);
CURL_SETOPT($curl_crack,CURLOPT_POSTFIELDS,"LoginForm[email]=naceriwalid%40hotmail.com&LoginForm[password]=passwordhere&toploginform[rememberme]=0&yt1=&toploginform[rememberme]=0");
CURL_SETOPT($curl_crack,CURLOPT_RETURNTRANSFER,True);
CURL_SETOPT($curl_crack,CURLOPT_FOLLOWLOCATION,True);
CURL_SETOPT($curl_crack,CURLOPT_COOKIEFILE,"cookie.txt"); //Put the full path of the cookie file if you want it to write on it
CURL_SETOPT($curl_crack,CURLOPT_COOKIEJAR,"cookie.txt"); //Put the full path of the cookie file if you want it to write on it
CURL_SETOPT($curl_crack,CURLOPT_CONNECTTIMEOUT,30);
CURL_SETOPT($curl_crack,CURLOPT_TIMEOUT,30);  

$exec = curl_exec($curl_crack);
if(preg_match("/^you are logged|logout|successfully logged$/i",$exec))
{
    $post = array('search' => 'keyword', 'abc' => 'xyz');

    curl_setopt($curl_crack, CURLOPT_POST, 1); // change back to GET
    curl_setopt($curl_crack, CURLOPT_POSTFIELDS, http_build_query($post)); // set post data
    curl_setopt($curl_crack, CURLOPT_URL, 'http://example.com/buy'); // set url for next request

    $exec = curl_exec($curl_crack); // make request to buy on the same handle with the current login session
}

Here are some other examples of using PHP & cURL to make multiple requests:

How to login in with Curl and SSL and cookies (links to multiple other examples)

Grabbing data from a website with cURL after logging in?

Pinterest login with PHP and cURL not working

Login to Google with PHP and Curl, Cookie turned off?

PHP Curl - Cookies problem

这篇关于使用curl登录并移动到另一个页面的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆