当前位置:首页 » 文件传输 » curl模拟设备访问
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

curl模拟设备访问

发布时间: 2022-07-14 22:19:54

㈠ 请教php curl模拟get请求与直接在浏览器访问网址有什么区别

curl方式你可以认为是服务端的ajax请求,服务端可以获取curl的结果,然后处理自己的业务,至于直接在浏览器访问,就不用说了,直接显示出请求的结果

㈡ 怎样用php中的curl模拟登陆

/**
* 模拟登录
*/

//初始化变量
$cookie_file = "tmp.cookie";
$login_url = "http://xxx.com/logon.php";
$verify_code_url = "http://xxx.com/verifyCode.php";

echo "正在获取COOKIE...\n";
$curlj = curl_init();
$timeout = 5;
curl_setopt($curl, CURLOPT_URL, $login_url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, $timeout);
curl_setopt($curl,CURLOPT_COOKIEJAR,$cookie_file); //获取COOKIE并存储
$contents = curl_exec($curl);
curl_close($curl);

echo "COOKIE获取完成,正在取验证码...\n";
//取出验证码
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $verify_code_url);
curl_setopt($curl, CURLOPT_COOKIEFILE, $cookie_file);
curl_setopt($curl, CURLOPT_HEADER, 0);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$img = curl_exec($curl);
curl_close($curl);

$fp = fopen("verifyCode.jpg","w");
fwrite($fp,$img);
fclose($fp);
echo "验证码取出完成,正在休眠,20秒内请把验证码填入code.txt并保存\n";
//停止运行20秒
sleep(20);

echo "休眠完成,开始取验证码...\n";
$code = file_get_contents("code.txt");
echo "验证码成功取出:$code\n";
echo "正在准备模拟登录...\n";

$post = "username=maben&pwd=hahahaha&verifycode=$code";
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_HEADER, false);
curl_setopt($curl, CURLOPT_RETURNTRANSFER,1);
curl_setopt($curl, CURLOPT_POSTFIELDS, $post);
curl_setopt($curl, CURLOPT_COOKIEFILE, $cookie_file);
$result=curl_exec($curl);
curl_close($curl);

//这一块根据自己抓包获取到的网站上的数据来做判断
if(substr_count($result,"登录成功")){
echo "登录成功\n";
}else{
echo "登录失败\n";
exit;
}

㈢ php的curl可以模拟IP v6来源访问么

不可以的,连接IP本身是无法模拟的,除非你采集的网站是从应用层来限制IP,比如X-Forwarded-For,但是对IP限制基本上都是tcp层。

㈣ 哪位达人会用PHP的curl模拟登陆百度

模拟浏览器登陆应用开发,最关键的地方是突破登陆验证。CURL技术不只支持http,还支持https。区别就在多了一层SSL加密传输。如果是要登陆https网站,php记得要支持openssl。还是先拿一个例子来分析。

//用户名
$login = 'username';
//密码
$password = 'password';

//163的用户登陆地址
$url = "https://reg.163.com/logins.jsp";

//post 要提交的数据
$fields = "verifycookie=1&style=16&proct=mail163&username=".$login."&password=".$password."&selType=jy&remUser=&secure=on&%B5%C7%C2%BC%D3%CA%CF%E4=%B5%C7%C2%BC%D3%CA%CF%E4";

//用来存放cookie的文件
$cookie_file = dirname(__FILE__)."/cookie.txt";

//启动一个CURL会话
$ch = curl_init();

// 要访问的地址
curl_setopt($ch, CURLOPT_URL, $url);

// 对认证证书来源的检查,0表示阻止对证书的合法性的检查。
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);

// 从证书中检查SSL加密算法是否存在
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 1);

//模拟用户使用的浏览器,在HTTP请求中包含一个”user-agent”头的字符串。
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)");

//发送一个常规的POST请求,类型为:application/x-www-form-urlencoded,就像表单提交的一样。
curl_setopt($ch, CURLOPT_POST, 1);

//要传送的所有数据,如果要传送一个文件,需要一个@开头的文件名
curl_setopt($ch, CURLOPT_POSTFIELDS, $fields);

//连接关闭以后,存放cookie信息的文件名称
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file);

// 包含cookie信息的文件名称,这个cookie文件可以是Netscape格式或者HTTP风格的header信息。
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);

// 设置curl允许执行的最长秒数
//curl_setopt($ch, CURLOPT_TIMEOUT, 6);

// 获取的信息以文件流的形式返回,而不是直接输出。
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);

// 执行操作
$result = curl_exec($ch);

if ($result == NULL) {
echo "Error:<br>";
echo curl_errno($ch) . " - " . curl_error($ch) . "<br>";
}

// 关闭CURL会话
curl_close($ch);上 面这个例子相对简单,因为用户名和密码可以明文传输,而且登陆也不需要验证码。qq.com的模拟登陆相对就麻烦多了,首先要突破验证码这关,然后由于 QQ密码是经过javascript加密后传输的,登陆界面也要模拟出来,下一篇文章再继续深入谈谈QQ的模拟登陆。

参考资料:
CURL详解 http://www.21andy.com/blog/20080507/1095.html
Tags: curl,模拟登陆wuzuquan 2008/07/18 09:40您好,我现在在做一个模拟yahoo登陆的php程序,因为yahoo的密码是经过javascript加密的,而且在加密过程中引用了一个网页随机生成的字符串challenge,这个字符串在每次访问网页的时候都不一样。
如果我采用curl来模拟登陆,过程如下:
先curl_init()初始化一个curl连接,设置相关选项后,curl_exec();然后利用采集功能得到challenge的值,经过加密计算出加密后的密码。再来一次curl_exec,将用户名,加密密码等post出去。
可是这样做采集到的challenge永远都是过时的,这该怎么解决呢?
希望不吝赐教,我的邮箱是[email protected]

㈤ 怎么用curl模拟游览器UA[php]

具体怎么写,我一时写不出来了,因为要实现对一站点频繁的访问, 怕被封IPfunction curl_string ($url,$timeout = 3,$proxy=1){ $ua = array(

㈥ 我用PHP CURL 模拟访问为什么统计不到

你所说的“其中一个人关闭了网站”是一个很明显的错误,网站的来访者所关闭的不是“网站”,只是他自己的浏览器。
从 Web 服务的机制上来说,服务器只是接收到对某个网页的请求后把相应的 HTML 格式的内容(可能包括 JavaScript程序)发送给请求者以后就关闭连接,至于浏览器端的用户是什么时候关闭浏览器(或者说是转移去查看别的网站的网页去了)服务器端是得不到任何信息的。
PHP、ASP、JSP 之类的网页访问只是服务器在发送 HTML 格式的内容之前需要先执行一下相应的文件里的程序,得到 HTML 格式的内容之后再发送而已,原理上还是发送完就关闭与请求者的连接。
服务器能得到的信息是接收来访者发来的网页请求信息的时候随同而来的IP地址,至于这个IP地址对应的用户什么时候跳转去看别的网站的网页去了服务器得不到任何信息。在你的 PHP 程序中,可以把得到一个来访者的IP地址的时候就给作为一个累加器用的跨网页文件跨不同来访者共享的变量添加1,20分钟之内没再接收到那个IP地址发来的请求就将累加器减1,这样,你把那个累加器内容显示出来就能反映你的网站在最近20分钟内有多少个IP来访问过,这个数就近似地反映了你的网站“在线人数”。