Heim > Backend-Entwicklung > PHP-Tutorial > 用fsockopen获取百度的搜索页

用fsockopen获取百度的搜索页

WBOY
Freigeben: 2016-06-23 14:38:34
Original
1078 Leute haben es durchsucht

我用php的函数fsockopen和fwrite,fgets等命令可直接获得http://www.baidu.com主页的内容,但却不能获得http://www.baidu.com/s?wd=音箱&pn=20的内容,甚是苦闷,觉得是百度做了防范了,但奇怪的是我将浏览器中所有的缓存和cookie都清除掉了,直接用地址栏访问http://www.baidu.com/s?wd=音箱&pn=20,却能够直接获得内容,但用php函数获取,却怎么也不行。百度是怎么能够区别出浏览器访问和程序访问的呢?哪位达人能说说原因和指点下迷津吗。
我没更多分了,用钱买php解决方案也行啊


回复讨论(解决方案)

添加 useragent 试试,
参考:http://tuzwu.iteye.com/blog/723260

当然试过了,已经参照Fiddler2截获的数据进行了全模仿

我觉得是你网络有问题

字符集编码问题吧?

奇了怪了,用file_get_contents确实可行,但用我的方法只是百度不能获取,其他网址都成功,这是为什么呢?

字符集编码没问题,我已经反复试验过了,同样的编码,file_get_contents是可以的

不知道你是怎么写的

$fp = fsockopen("www.baidu.com", 80, $errno, $errstr, 30);$out = "GET /s?wd=音箱&pn=20 HTTP/1.1\r\n";$out .= "Host: www.baidu.com\r\n";$out .= "Connection: Close\r\n\r\n";fwrite($fp, $out);while (!feof($fp)) {  echo fgets($fp, 128);}fclose($fp);
Nach dem Login kopieren
这回不贴图了,贴个数据片段
Resource id #2HTTP/1.1 200 OK
Date: Fri, 29 Nov 2013 07:21:48 GMT
Server: BWS/1.0
Content-Length: 109229
Content-Type: text/html;charset=utf-8
Cache-Control: private
BDPAGETYPE: 3
BDUSERID: 0
BDQID: 0xba09dfbd018d026b
Set-Cookie: BDSVRTM=245; path=/
Set-Cookie: H_PS_PSSID=4316_1462_4181_4261; path=/; domain=.baidu.com
Set-Cookie: BAIDUID=93A4FEBC6A24E74B727FEE7001E65B50:FG=1; expires=Fri, 29-Nov-43 07:21:47 GMT; path=/; domain=.baidu.com
P3P: CP=" OTI DSP COR IVA OUR IND COM "
Connection: Close

......

>音箱频道

音箱报价中心  品牌 漫步者 BOSE 麦博 惠威 JBL 飞利浦 奋达 罗技 小米 三诺 创新 朗琴 更多>> 价格 100元以下 101-200元 201-300元 301-500元 501-800元...
speaker.pcpop.com/soundbox/ 2013-11-11 
target="_blank" 
                         class="m">百度快照

        data-click="{
'F':'778317EA',
'F1':'9D73F1E4',
'F2':'4CA6DD6B',
'F3':'54E5243F',
'T':'1385709708',
'y':'F3D2FEDF'
 
}"
href="http://www.baidu.com/link?url=iHdhI9m-N3i0M6QsBp8zjalqAtClICWD28BH_hXsPvRlaAAlSHQ9pzL0AZsRgan2"

            target="_blank"
        
>音箱_电脑音箱_音响-IT168音箱频道

IT168音箱频道向您提供最专业最权威的音箱音响产品评测,为您带来最新最准确的音箱音响产品资讯报价信息,给您提供各种档次音箱音响产品评析,帮您更好的选购...
sound.it168.com/ 2013-11-15 
 <script> <br /> bds.ready(function(){ <br /> <p class="sougouAnswer"> 无论你发出的请求是什么编码的,返回的总是 utf-8 的 <br /> 因为他的头部有 Content-Type: text/html;charset=utf-8 <p class="sougouAnswer"> 领教,多谢了。我再对照研究下。 <br /> 另外,google的我一直不能成功,版主能再费时试下吗? <br /> http://www.google.com.hk/search?q=音箱&start=10 <p class="sougouAnswer"> http://blog.csdn.net/jdgdf566/article/details/13632111 </script>
Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage