php 伪造ip以及url来路信息方法汇总
前端之家收集整理的这篇文章主要介绍了
php 伪造ip以及url来路信息方法汇总,
前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
@H_502_0@
@H_
502_0@
第一种:PHPcurl
@H
502_0@开启
方法:
@H_
502_0@1、找到
PHP.ini,
修改extension=
PHPcurl.dll 把前面的分号去掉;
@H502_0@2、把
PHP_curl.dll,
PHP5ts.dll,libeay32.dll,ssleay32.dll 复制到 windows/system32目录下 然后重启
PHP的服务;
3、建test.
PHP测试
文件,插入以下
代码:
@H_
502_0@<div class="codetitle">
<a style="CURSOR: pointer" data="31608" class="copybut" id="copybut31608" onclick="doCopy('code31608')"> 代码如下: <div class="codebody" id="code31608">
<?php
$ch = curl_init(); //初始化
curl_setopt($ch,CURLOPT_URL,<a href="
http://www.example.com/search.asp?page=3&typeid">http://www.example.com/search.asp?page=3&typeid=片名&keyword=建国大业); //你要访问的页面
curl_setopt($ch,CURLOPT_REFERER,<a href="
http://www.example.com/">http://www.example.com/); //伪造来路页面
curl_setopt($chtml,CURLOPT_RETURNTRANSFER,1); //是否显示内容
curl_exec($ch); //执行
curl_close($ch); //返回关闭
?>
@H_
502_0@
第二种:fsockopen
@H_
502_0@
PHP
$host = "
"; //你要访问的域名
$target = "/test.asp"; //你要访问的页面地址
$referer = ""; //伪造来路页面
$fp = fsockopen($host,80,$errno,$errstr,30);
if(!$fp){
echo "$errstr($errno)
\n";
}else{
$out = "
GET $target HTTP/1.1
Host: $host
Referer: $referer
Connection: Close\r\n\r\n";
fwrite($fp,$out);
while(!feof($fp)){
echo fgets($fp,1024);
}
fclose($fp);
}
?>
@H_
502_0@
PHP curl抓取网站
------------------------------------------------------------------------------------------
PHP
// 初始化一个 cURL 对象
$curl = curl_init();
// 设置你需要抓取的URL
curl_setopt($curl,'http://cocre.com');
// 设置header
curl_setopt($curl,CURLOPT_HEADER,1);
// 设置cURL 参数,要求结果保存到字符串中还是
输出到屏幕上。
curl_setopt($curl,1);
// 运行cURL,请求网页
$data = curl_exec($curl);
//
关闭URL请求
curl_close($curl);
//
显示获得的数据
var_dump($data);
@H_
502_0@================================================================================================
curl_setopt()
函数将为一个CURL会话设置选项。option参数是你想要的设置,value是这个选项给定的值。
下列选项的值将被作为长整形使用(在option参数中指定):
*CURLOPT_INFILESIZE: 当你
上传一个
文件到远程
站点,这个选项告诉
PHP你
上传文件的大小。
*CURLOPT_VERBOSE: 如果你想CURL报告每一件意外的事情,设置这个选项为一个非零值。
*CURLOPT_HEADER: 如果你想把一个头包含在
输出中,设置这个选项为一个非零值。
*CURLOPT_NOPROGRESS: 如果你不会
PHP为CURL传输
显示一个进程条,设置这个选项为一个非零值。
注意:
PHP自动设置这个选项为非零值,你应该仅仅为了调试的目的来改变这个选项。
*CURLOPT_NOBODY: 如果你不想在
输出中包含body部分,设置这个选项为一个非零值。
*CURLOPT_FAILONERROR: 如果你想让
PHP在发生
错误(HTTP
代码返回大于等于300)时,
不显示,设置这个选项为一人非零值。默认行为是返回一个正常页,忽略
代码。
*CURLOPT_UPLOAD: 如果你想让
PHP为
上传做准备,设置这个选项为一个非零值。
*CURLOPT_POST: 如果你想
PHP去做一个正规的HTTP POST,设置这个选项为一个非零值。这个POST是普通的 application/x-www-from-urlencoded 类型,多数被HTML表单使用。
*CURLOPT_FTPLISTONLY: 设置这个选项为非零值,
PHP将列出FTP的目录名列表。
*CURLOPT_FTPAPPEND: 设置这个选项为一个非零值,
PHP将应用远程
文件代替覆盖它。
*CURLOPT_NETRC: 设置这个选项为一个非零值,
PHP将在你的 ~./netrc
文件中查找你要建立连接的远程
站点的
用户名及密码。
*CURLOPT_FOLLOWLOCATION: 设置这个选项为一个非零值(象 “Location: “)的头,服务器会把它当做HTTP头的一部分发送(注意这是递归的,
PHP将发送形如 “Location: “的头)。
*CURLOPT_PUT: 设置这个选项为一个非零值去用HTTP
上传一个
文件。要
上传这个
文件必须设置CURLOPT_INFILE和CURLOPT_INFILESIZE选项.
*CURLOPT_MUTE: 设置这个选项为一个非零值,
PHP对于CURL
函数将完全沉默。
*CURLOPT_TIMEOUT: 设置一个长整形数,作为最大延续多少秒。
*CURLOPT_LOW_SPEED_LIMIT: 设置一个长整形数,控制传送多少字节。
*CURLOPT_LOW_SPEED_TIME: 设置一个长整形数,控制多少秒传送CURLOPT_LOW_SPEED_LIMIT规定的字节数。
*CURLOPT_RESUME_FROM: 传递一个包含字节偏移地址的长整形参数,(你想转移到的开始表单)。
*CURLOPT_SSLVERSION: 传递一个包含SSL版本的长参数。默认
PHP将被它自己努力的确定,在更多的安全中你必须手工设置。
*CURLOPT_TIMECONDITION: 传递一个长参数,指定怎么处理CURLOPT_TIMEVALUE参数。你可以设置这个参数为TIMECOND_IFMODSINCE 或 TIMECOND_ISUNMODSINCE。这仅用于HTTP。
*CURLOPT_TIMEVALUE: 传递一个从1970-1-1开始到现在的秒数。这个时间将被CURLOPT_TIMEVALUE选项作为指定值使用,或被默认TIMECOND_IFMODSINCE使用。
下列选项的值将被作为字符串:
*CURLOPT_URL: 这是你想用
PHP取回的
URL地址。你也可以在用curl_init()
函数初始化时设置这个选项。
*CURLOPT_USERPWD: 传递一个形如[username]:[password]的字符串,用于验证。
*CURLOPT_PROXYUSERPWD: 传递一个形如[username]:[password] 格式的字符串去连接HTTP代理。
*CURLOPT_RANGE: 传递一个你想指定的范围。它应该是”X-Y”格式,X或Y是被除外的。HTTP传送同样
支持几个间隔,用逗句来分隔(X-Y,N-M)。
*CURLOPT_POSTFIELDS: 传递一个作为HTTP “POST”操作的所有数据的字符串。
*CURLOPT_REFERER: 在HTTP请求中包含一个”referer”头的字符串。
*CURLOPT_USERAGENT: 在HTTP请求中包含一个”user-agent”头的字符串。
*CURLOPT_FTPPORT: 传递一个包含被ftp “POST”指令使用的IP地址。这个POST指令告诉远程服务器去连接我们指定的IP地址。 这个字符串可以是一个IP地址,一个主机名,一个网络界面名(在UNIX下),或是‘-'(使用系统默认IP地址)。
*CURLOPT_COOKIE: 传递一个包含HTTP cookie的头连接。
*CURLOPT_SSLCERT: 传递一个包含PEM格式证书的字符串。
*CURLOPT_SSLCERTPASSWD: 传递一个包含使用CURLOPT_SSLCERT证书必需的密码。
*CURLOPT_COOKIEFILE: 传递一个包含cookie数据的
文件的名字的字符串。这个cookie
文件可以是Netscape格式,或是堆存在
文件中的HTTP风格的头。
*CURLOPT_CUSTOMREQUEST: 当进行HTTP请求时,传递一个字符被GET或HEAD使用。为进行DELETE或其它操作是有益的,更Pass a string to be used instead of GET or HEAD when doing an HTTP request. This is useful for doing or another,more obscure,HTTP request.
注意: 在确认你的服务器
支持命令先不要去这样做。
下列的选项要求一个
文件描述(通过使用fopen()
函数获得):
*CURLOPT_FILE: 这个
文件将是你放置传送的
输出文件,默认是STDOUT.
*CURLOPT_INFILE: 这个
文件是你传送过来的输入
文件。
*CURLOPT_WRITEHEADER: 这个
文件写有你
输出的头部分。
*CURLOPT_STDERR: 这个
文件写有
错误而不是stderr。
@H_
502_0@
传送数据
------------------------------------------------------------------------------------------------
@H_
502_0@
@H_
502_0@===========================================================================================
关于代理服务器
--------------------------------------------------------------------------------------------
@H_
502_0@
@H_
502_0@==============================================================================================
关于SSL和Cookie
@H_
502_0@关于SSL也就是HTTPS协议,你只需要把CURLOPT_URL连接中的http://变成https://就可以了。当然,还有一个参数叫CURLOPT_SSL_VERIFYHOST可以设置为验证
站点。
关于Cookie,你需要了解下面三个参数:
CURLOPT_COOKIE,在当面的会话中设置一个cookie
CURLOPT_COOKIEJAR,当会话结束的时候保存一个Cookie
CURLOPT_COOKIEFILE,Cookie的
文件。
@H_
502_0@
HTTP服务器认证
-------------------------------------------------------------------------------------------------------------------------------
=====================================================================================
@H_
502_0@
http的get实现
@H_
502_0@
);
curl_setopt($ch,true);
curl_setopt($ch,CURLOPT_BINARYTRANSFER,true);
$output = curl_exec($ch);
$fh = fopen( out.html,\'w\');
fwrite($fh,$output);
fclose($fh);
http的post实现
urlencode($last_name),
\'fname\'=>urlencode($first_name),
\'title\'=>urlencode($title),
\'company\'=>urlencode($institution),
\'age\'=>urlencode($age),
\'email\'=>urlencode($email),
\'phone\'=>urlencode($phone)
);
//url-ify the data for the POST
foreach($fields as $key=>$value) { $fields_string .= $key.\'=\'.$value.\'&\'; }
rtrim($fields_string,\'&\');
//open connection
$ch = curl_init();
//set the url,number of POST vars,POST data
curl_setopt($ch,$url);
curl_setopt($ch,count($fields));
curl_setopt($ch,$fields_string);
//execute post
$result = curl_exec($ch);
//close connection
curl_close($ch);
@H_
502_0@
PHP
set_time_limit(0);
@date_default_timezone_set('Asia/Shanghai');
function curlrequest($url,$postfield,$proxy=""){
$proxy=trim($proxy);
$user_agent ="Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)";
$ch = curl_init(); // 初始化CURL句柄
if(!empty($proxy)){
curl_setopt ($ch,$proxy);//设置代理服务器
}
curl_setopt($ch,$url); //设置请求的URL
//curl_setopt($ch,CURLOPT_FAILONERROR,1); // 启用时
显示HTTP状态码,默认行为是忽略编号小于等于400的HTTP信息
//curl_setopt($ch,CURLOPT_FOLLOWLOCATION,1);//启用时会将服务器服务器返回的“Location:”放在header中递归的返回给服务器
curl_setopt($ch,1);// 设为TRUE把curl_exec()结果转化为字串,而不是直接
输出
curl_setopt($ch,1);//启用POST提交
curl_setopt($ch,$postfield); //设置POST提交的字符串
//curl_setopt($ch,CURLOPT_PORT,80); //设置端口
curl_setopt($ch,CURLOPT_TIMEOUT,25); // 超时时间
curl_setopt($ch,CURLOPT_USERAGENT,$user_agent);//HTTP请求User-Agent:头
//curl_setopt($ch,1);//设为TRUE在
输出中包含头信息
//$fp = fopen("example_homepage.txt","w");//
输出文件
//curl_setopt($ch,CURLOPT_FILE,$fp);//设置
输出文件的位置,值是一个资源类型,默认为STDOUT (浏览器)。
curl_setopt($ch,CURLOPT_HTTPHEADER,array(
'Accept-Language: zh-cn',
'Connection: Keep-Alive',
'Cache-Control: no-cache'
));//设置HTTP头信息
$document = curl_exec($ch); //执行预定义的CURL
$info=curl_getinfo($ch); //得到返回信息的特性
//print_r($info);
if($info[http_code]=="405"){
echo "bad proxy {$proxy}\n"; //代理出错
exit;
}
//curl_close($ch);
return $document;
}
//请求URL
$url="
";
//POST提交数据,可用HTTPWATCH查看
$postfield="userName=test&year=2008&passWord=123456&Submit=�ύ";
//代理服务器
$proxy = '';
//请求
$str=curlrequest($url,$proxy);
//输出结果
echo $str;
array(
'method'=>'POST',
'header'=>'Content-type: application/x-www-form-urlencoded'."\r\n".
'User-Agent : Jimmy\'s POST Example beta'."\r\n".
'Content-length: '.strlen($post_string)+8,
'content'=>'mypost='.$post_string)
);
$stream_context = stream_context_create($context);
$data = file_get_contents($remote_server,FALSE,$stream_context);
return $data;
}
?>