php的curl携带header请求头信息实现http访问的方法

2025-05-27 0 61

导读:

curl请求时添加请求头信息可以模拟真人操作,不容易被当成是爬虫机器人(采集),从而可以绕过Incapsula等安全验证机制。

1、首先使用浏览器(示例使用的是火狐浏览器)访问接口网址,使用F12调试,查看请求头信息,如下:

php的curl携带header请求头信息实现http访问的方法

2、实现代码:

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61
<?php

/**

* 开始访问请求

* @param $url

* @return bool|string

*/

function fetch_url($url) {

$header = FormatHeader($url);

$useragent = 'Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:83.0) Gecko/20100101 Firefox/83.0';

$timeout= 120;

$ch = curl_init($url);

curl_setopt($ch, CURLOPT_FAILONERROR, true);

//设置请求头信息

curl_setopt($ch, CURLOPT_HTTPHEADER, $header);

//不取得返回头信息

curl_setopt($ch, CURLOPT_HEADER, 0);

// 关闭https验证

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);

curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true );

curl_setopt($ch, CURLOPT_ENCODING, "" );

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true );

curl_setopt($ch, CURLOPT_AUTOREFERER, true );

curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout );

curl_setopt($ch, CURLOPT_TIMEOUT, $timeout );

curl_setopt($ch, CURLOPT_MAXREDIRS, 10 );

curl_setopt($ch, CURLOPT_USERAGENT, $useragent);

$content = curl_exec($ch);

if(curl_errno($ch))

{

echo 'Error:' . curl_error($ch);

}

else

{

return $content;

}

curl_close($ch);

}

//添加请求头

function FormatHeader($url)

{

// 解析url

$temp = parse_url($url);

$query = isset($temp['query']) ? $temp['query'] : '';

$path = isset($temp['path']) ? $temp['path'] : '/';

$header = array (

"POST {$path}?{$query} HTTP/1.1",

"Host: {$temp['host']}",

"Referer: http://{$temp['host']}/",

"Content-Type: text/xml; charset=utf-8",

'Accept: application/json, text/javascript, */*; q=0.01',

'Accept-Encoding:gzip, deflate, br',

'Accept-Language:zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2',

'Connection:keep-alive',

'User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:83.0) Gecko/20100101 Firefox/83.0',

'X-Requested-With: XMLHttpRequest',

);

return $header;

}

?>

3、调用示例:

?

1

2

3

4

5
<?php

//lcg_value() 返回范围为 (0, 1) 的一个伪随机数

$url="http://www.xxx.com/getdata.php?v=".lcg_value();

//访问网址

$html = fetch_url($url);

到此这篇关于php的curl携带header请求头信息实现http访问的方法的文章就介绍到这了,更多相关php的curl请求头信息实现http访问内容请搜索快网idc以前的文章或继续浏览下面的相关文章希望大家以后多多支持快网idc!

原文链接:https://blog.csdn.net/qq15577969/article/details/110913311

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

快网idc优惠网 建站教程 php的curl携带header请求头信息实现http访问的方法 https://www.kuaiidc.com/69989.html

相关文章

发表评论
暂无评论