前言
一朋友想访问一个网站,发现进一个论坛必须推广链接地址,也就是需要20个不同的ip进行访问,呵呵,这多丢人,为了帮伙计一下,果断用上curl
原理
(1)整理一份ip库出来,网上google一下一大片
(2)修改CURLOPT_HTTPHEADER字段,设置X-FORWARD-FOR和CLIENT-IP字段
整理IP库
我网上随便找了一个链接:
http://www.56ads.com/article/201201/16304.html (ps:蛋疼的链接)
我把网址里的东西拷贝到txt文件里,然后sed和awk处理了一下,分享一下我的awk处理脚本
#!/bin/awk -f
#运行前
BEGIN {
FS = " ";
count = 0;
}
#运行中
{
iparr[count ++] = $0;
}
#运行后
END {
printf("<?php\n");
printf("$iparr = array(\n");
for (i = 0; i < count; i ++) {
printf("'%s' => '%s',\n", iparr[i], iparr[i]);
}
printf(");\n");
}
CURL使用
<?php
require_once dirname(__FILE__) . "/iplib.php";
$req_url = "test.com";
foreach ($iparr as $forward => $cip) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $req_url);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
"X-FORWARDED-FOR:$forward",
"CLIENT-IP:$cip"
));
curl_setopt($ch, CURLOPT_REFERER, 'http://blog.csdn.net/');
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_exec($ch);
curl_close($ch);
}
缺陷
很多服务器端一般都采用了$_SERVER['REMOTE_ADDR']来获取客户端的真实ip,这是在传输层就已经决定的地址,无法通过CURL进行修改,好吧,貌似我也没帮朋友做成功这件事情,不过还是记录一下