> php教程 > PHP源码 > phpQQ登陆

phpQQ登陆

PHP中文网
풀어 주다: 2016-05-25 17:10:23
원래의
1087명이 탐색했습니다.

代码

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

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

class qq {

 

    public $sid;

    public $http;

    public $qq_num;

 

    function __construct() {

        $this->http = new http_no_cookie;

    }

 

    function login($qq_num, $qq_pwd) {

       echo  $data = $this->http->get("http://pt.3g.qq.com/");

        $action = preg_match("/action=\"(.+)?\"/", $data, $matches);

        $action = $matches[1];

        $params = array();

        $params["login_url"] = "http://pt.3g.qq.com/s?aid=nLogin";

        $params["sidtype"] = 1;

        $params["loginTitle"] = "手机腾讯网";

        $params["bid"] = 0;

        $params["qq"] = $qq_num;

        $params["pwd"] = $qq_pwd;

        $params["loginType"] =1;

        echo $data = $this->http->post($action, http_build_query($params));

        if(preg_match("/http:\/\/vc.gtimg.com\//",$data,$matches)){

            echo "需要输入验证码";

            return 0;

            exit;

        }

 

        if(preg_match("/密码错误/",$data,$matches)){

            echo "密码错误";

            return 1;

            exit;

        }

        $action = preg_match("/sid=(.+?)&/", $data, $matches);

        $this->sid = $matches[1];

        return $this->sid;

    }

 

    function sendMsg($to_num, $msg, $sid = 0) {

        $sid = $sid ? $sid : $this->sid;

        if (!$sid)

            exit("sid值未传入进去");

        $params = array();

        $params["msg"] = $msg;

        $params["u"] = $to_num;

        $params["saveURL"] = 0;

        $params["do"] = "send";

        $params["on"] = 1;

        $params["aid"] = "发送";

        $url = "http://q16.3g.qq.com/g/s?sid=" . $sid;

        echo $data = $this->http->post($url, http_build_query($params));

        return $data;

    }

 

    function getMsg($qq_num = 0, $sid = 0) {

        $qq_num = $qq_num ? $qq_num : $this->qq_num;

        if (!$qq_num)

            exit("qq_num值未传入进去");

        $sid = $sid ? $sid : $this->sid;

        if (!$sid)

            exit("sid值未传入进去");

        $url = "http://q16.3g.qq.com/g/s?sid=" . $sid . "&3G_UIN=" . $qq_num . "&saveURL=0&aid=nqqChat";

        $data = $this->http->get($url);

        preg_match("/name=\"u\" value=\"(\d+)\"/", $data, $matches);

        $result["qq"] = $matches[1];

        $data = explode("<form", $data);

        $data = $data[0];

        preg_match_all("/<p>(.+)?<\/p>/", $data, $matches);

        unset($matches[1][0]);

        $result["content"] = $matches[1];

        return $result;

    }

    function logout($sid){

        $url="http://pt.3g.qq.com/s?sid=".$sid."&aid=nLogout";

        echo $url;

        echo $this->http->get($url);

    }

    function getFriendsList($qq_num = 0, $sid = 0){

        $result=array();

 

        $qq_num = $qq_num ? $qq_num : $this->qq_num;

        if (!$qq_num)

            exit("qq_num值未传入进去");

        $sid = $sid ? $sid : $this->sid;

        if (!$sid)

            exit("sid值未传入进去");

        $url="http://q16.3g.qq.com/g/s?aid=nqqchatMain&sid=".$sid."&myqq=".$qq_num;

        while(true){

        $i=1;

        $url.="&p=".$i;

        $data=$this->http->get($url);

        preg_match_all("/u=(.+?)&/",$data,$matches);

        foreach($matches[1] as $key=>$value){

            $result[]=$value;

        }

        if(count($matches[1])<13)

            break;

        $i++;

       }

       return $result;

    }

}

로그인 후 복사

2. http.class.php

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

<?php

class http {

    private $curl;

    public $user_agent = "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/525.13 (KHTML, like Gecko) Chrome/0.2.149.29 Safari/525.13";

      

    public function get($url) {

        $this->curl = curl_init();

        curl_setopt($this->curl, CURLOPT_CONNECTTIMEOUT, 20);

        curl_setopt($this->curl, CURLOPT_URL, $url);

        curl_setopt($this->curl, CURLOPT_HEADER, 1);

        curl_setopt($this->curl, CURLOPT_USERAGENT, $this->user_agent);

        curl_setopt($this->curl, CURLOPT_RETURNTRANSFER, 1);

        $data = curl_exec($this->curl);

        curl_close($this->curl);

        return $data;

    }

    public function post($url, $params) {

        $this->curl = curl_init();

        curl_setopt($this->curl, CURLOPT_CONNECTTIMEOUT, 20);

        curl_setopt($this->curl, CURLOPT_URL, $url);

        curl_setopt($this->curl, CURLOPT_HEADER, 1);

        //curl_setopt($this->curl, CURLOPT_FOLLOWLOCATION, true);

        curl_setopt($this->curl, CURLOPT_POST, 1);

        curl_setopt($this->curl, CURLOPT_USERAGENT, $this->user_agent);

        curl_setopt($this->curl, CURLOPT_POSTFIELDS, $params);

        curl_setopt($this->curl, CURLOPT_RETURNTRANSFER, 1);

        $data = curl_exec($this->curl);

        curl_close($this->curl);

        return $data;

    }

}

?>

로그인 후 복사
관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 추천
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿