欢迎来到 54818模板网!这是一个yzmcms的模板分享站。

通过CURL来模拟来源及IP获取COOKIES来模拟登陆

相关案例演示

        最近多站点模块出现了新的问题。问题不是出在模块本身。而是浏览器限制了。现在的浏览器出于安全考虑,不让HTTPS网站访问HTTP的网站资源。所以没有办法啊,大环境是这样。只能想想其它办法了。总要解决这个问题,要不能谁买多站点模块呢。

        解决思路是:管理站远程抓取被管理站页面,通过模拟登录,抓取到被管理站的后台页面源代码。

        抓取源代码的话那就要用到CURL,并且要饶过验证码,获取cookies并提交来采集代码。

        操作代码如下:

$url = '登录地址';

$ip = getip(); //模拟IP地址
$post = array (
	'username' => '用户名',
	'password' => '密码',
); //需要提交的表单数据
$refer = 'http://www.xxx.com/admin/index/init.html'; //模拟来源地址
$header = array(
	'Host:www.xxx.cn',
	'Referer:'.$refer,
	'X-Forwarded-For:'.$ip,
	'Client-Ip:'.$ip,
	'Upgrade-Insecure-Requests:1',
	'User-Agent:Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36',
);

$cookie = 'cookies的地址';


//-------上面是条件----------下面是两种调用方法------------

//POST 提交方法
$res = curl_post($url, $cookie, $post, $refer, $header,1);

//GET 提交方法
$res = curl_post($url, $cookie, $post, $refer, $header);


        curl函数封装:

private function curl_post($url, $cookie, $post = array(), $refer = '', $header = array(), $fx = 0) {
	$curl = curl_init();//初始化curl模块
	curl_setopt($curl, CURLOPT_URL, $url);//登录提交的地址
	$refer && curl_setopt($curl, CURLOPT_REFERER, $refer);
	count($header) && curl_setopt($curl, CURLOPT_HTTPHEADER, $header);//模拟头信息
	curl_setopt($curl, CURLOPT_HEADER, 0);//是否显示头信息
	curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);//是否自动显示返回的信息
	curl_setopt($curl, CURLOPT_COOKIEFILE, $cookie); //读取cookie
	if(!$fx){
		curl_setopt($curl, CURLOPT_POST, 0);//get方式提交
	}else{
		curl_setopt($curl, CURLOPT_POST, 1);//post方式提交
	}
	count($post) && curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($post));//要提交的信息
	curl_setopt($curl, CURLOPT_COOKIEJAR, $cookie); //设置Cookie信息保存在指定的文件中
	$rs = curl_exec($curl);//执行cURL
	curl_close($curl);//关闭cURL资源,并且释放系统资源
	return $rs;
}

        好了,就写到这里,路还很长。实现功能还要很久啊。

    作者:54818模板网 关注:1422 时间:2021-09-16 10:37:30
    相关网站教程