liuyuqi-dellpc 5 years ago
parent
commit
2b88e88b68
13 changed files with 360 additions and 0 deletions
  1. 13 0
      .dockerignore
  2. 18 0
      Dockerfile
  3. 35 0
      README.md
  4. BIN
      __pycache__/user_agent.cpython-36.pyc
  5. 100 0
      comment/comment.py
  6. 13 0
      comment/save_comment.py
  7. 8 0
      conf/user.sql
  8. 10 0
      docker-compose.debug.yml
  9. 8 0
      docker-compose.yml
  10. 30 0
      update_dict.py
  11. 86 0
      user_agent.py
  12. 26 0
      utils/kuaishou.py
  13. 13 0
      video/download.py

+ 13 - 0
.dockerignore

@@ -0,0 +1,13 @@
+node_modules
+npm-debug.log
+Dockerfile*
+docker-compose*
+.dockerignore
+.git
+.gitignore
+.env
+*/bin
+*/obj
+README.md
+LICENSE
+.vscode

+ 18 - 0
Dockerfile

@@ -0,0 +1,18 @@
+FROM python:alpine
+LABEL Name=crawl-kuaishou Version=0.0.1
+EXPOSE 3000
+
+WORKDIR /app
+ADD . /app
+
+RUN python3 -m pip install -r requirements.txt
+CMD ["python3", "-m", "crawl-kuaishou"]
+
+# Using pipenv:
+#RUN python3 -m pip install pipenv
+#RUN pipenv install --ignore-pipfile
+#CMD ["pipenv", "run", "python3", "-m", "crawl-kuaishou"]
+
+# Using miniconda (make sure to replace 'myenv' w/ your environment name):
+#RUN conda env create -f environment.yml
+#CMD /bin/bash -c "source activate myenv && python3 -m crawl-kuaishou"

+ 35 - 0
README.md

@@ -0,0 +1,35 @@
+## crawl-kuaishou
+
+快手爬虫,实现快手主播增粉,在线人数维持。
+
+### docker 环境搭建:
+
+```
+docker pull hub.tencentyun.com/google/crawl-kuaishou:[v1.0.0]
+docker tag [ImageId] hub.tencentyun.com/google/crawl-kuaishou:[v1.0]
+docker push hub.tencentyun.com/google/crawl-kuaishou:[v1.0.0]
+```
+
+```
+docker volume create --name datadir
+docker run --name my-mysql -v datadir:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -p 3306:3306 -d daocloud.io/mysql:5.7.4
+```
+
+
+```
+cd crawl_bilibili
+python user/get_user.py
+python user/get_face.py
+```
+
+### 快手签名算法
+
+https://blog.csdn.net/wangmxe/article/details/89142436
+
+
+### 错误码表
+
+```
+400       
+{"result":120}
+```

BIN
__pycache__/user_agent.cpython-36.pyc


+ 100 - 0
comment/comment.py

@@ -0,0 +1,100 @@
+#!/usr/bin/env python
+# -*- encoding: utf-8 -*-
+'''
+@File    :   login.py
+@Time    :   2019/05/25 21:37:21
+@Author  :   Liuyuqi 
+@Version :   1.0
+@Contact :   liuyuqi.gov@msn.cn
+@License :   (C)Copyright 2019
+@Desc    :   自动评论
+解决方案:
+
+'''
+
+import requests
+import json
+import os
+import sys
+import re
+# import pymysql
+import random
+
+
+import user_agent
+
+# src = "C:/Users/liuyuqi/Desktop/crawl_bilibili"
+# os.chdir(src)
+# sys.path.append(src)
+
+baseUrl = "https://live.kuaishou.com"
+# baseUrl = "http://nginx.ok.yoqi.me:88"
+
+proxies = {"http": "http://120.26.110.59:8080"}
+sessionClient = requests.session()
+
+baseHeader = {
+    "Accept": "application/json",
+    "Content-Type": "application/json;charset=UTF-8",
+    "Origin": baseUrl,
+    "kpf": "PC_WEB",
+    "kpn": "GAME_ZONE",
+    'User-Agent': user_agent.getUA()
+}
+
+
+def login(parameter_list):
+    """
+    登录快手
+    param :
+    return:
+    """
+    url = ""
+    headers = ""
+
+    # cookies = requests.utils.dict_from_cookiejar(session.cookies)
+    # print(session)
+
+    res = requests.get(
+        url=url, headers=user_agent.getheaders()).content.decode("utf8")
+    mSessions = requests.session()
+
+    print(res)
+
+
+def comment():
+    """
+    给主播评论
+    param :
+    return:
+    """
+    url = baseUrl+"/comment"
+    mPartHeader = {
+        "Referer": "https://live.kuaishou.com/u/3xphut7zrw7zcbq",
+    }
+    mHeader = baseHeader.copy()
+    mHeader.update(mPartHeader)
+    data = u'{"liveStreamId": "uZrj-hcnNk0","content": "主播好呀,有人吗,呜呜。","color": null}'.encode(
+        "utf8")
+    cookies = {
+        "clientid": "3",
+        "did": "web_804ededc5b702fbd39b9292e8fbd401a",
+        "client_key": "65890b29",
+        "userId": "1365365171",
+        "userId": "1365365171",
+        "kuaishou.live.web_st": "ChRrdWFpc2hvdS5saXZlLndlYi5zdBKgAVk6tclD4E4ts3EOu0AkqBSre4QzQIHJF4gGjASPMpwdd-LRKwmNJqM5Me_HpbjGgFdRi-DklvaR_UybDISWL-9AFj5mcGhGcH6QKbW-LaLy7q4tvXwKxd0TkzzXRH26uIlrrUaiFg2e9V7qUJ_Wd63zMjpJW9QlY5A51ls7ygE9AeOixq96fiQEq6bsFb0PjoW40kurt-Mdsu9cmpoW_6gaEm-zwBmcbUA4lm5ejQnh9kVjySIgNVsKf0l7b9hYQPICQLltkWi8863TWCzJndAqxL1jK-koBTAB",
+        "kuaishou.live.bfb1s": "477cb0011daca84b36b3a4676857e5a1",
+        "kuaishou.live.web_ph": "f14d184cde684f6f7f1aae2f6eca47b8c34d"
+    }
+
+# 下面值是变动的cookie
+# "kuaishou.live.web_ph": "35642148eaef81c55d0c31082222fa91c2c7"
+
+    res = sessionClient.post(
+        url=url, headers=mHeader, data=data, cookies=cookies,
+        # proxies=proxies
+    )
+    print(res.text)
+
+if __name__ == "__main__":
+    comment()

+ 13 - 0
comment/save_comment.py

@@ -0,0 +1,13 @@
+#!/usr/bin/env python
+# -*- encoding: utf-8 -*-
+'''
+@File    :   save_comment.py
+@Time    :   2019/05/26 00:12:06
+@Author  :   Liuyuqi 
+@Version :   1.0
+@Contact :   liuyuqi.gov@msn.cn
+@License :   (C)Copyright 2019
+@Desc    :   保存评论
+'''
+
+

+ 8 - 0
conf/user.sql

@@ -0,0 +1,8 @@
+DROP TABLE IF EXISTS `user`;
+CREATE TABLE `user` (
+  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+  `mid` int(20) unsigned NOT NULL,
+  `name` varchar(45) NOT NULL,
+  `sex` varchar(45) NOT NULL,
+  PRIMARY KEY (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;

+ 10 - 0
docker-compose.debug.yml

@@ -0,0 +1,10 @@
+version: '2.1'
+
+services:
+  crawl-kuaishou:
+    image: crawl-kuaishou
+    build:
+      context: .
+      dockerfile: Dockerfile
+    ports:
+      - 3000:3000

+ 8 - 0
docker-compose.yml

@@ -0,0 +1,8 @@
+version: '2.1'
+
+services:
+  crawl-kuaishou:
+    image: crawl-kuaishou
+    build: .
+    ports:
+      - 3000:3000

+ 30 - 0
update_dict.py

@@ -0,0 +1,30 @@
+#!/usr/bin/env python
+# -*- encoding: utf-8 -*-
+'''
+@File    :   update_dict.py
+@Time    :   2019/05/25 23:39:20
+@Author  :   Liuyuqi 
+@Version :   1.0
+@Contact :   liuyuqi.gov@msn.cn
+@License :   (C)Copyright 2019
+@Desc    :   python copy()的作用
+
+下面要修改 baseHeader 的值为 mHeader ,java等代码中实现很简单:
+mHeader=baseHeader.update(mPartHeader) #把baseHeader update修改后赋值给mHeader即可。
+
+但是python中这样是错误。思想是先copy()一份baseHeader,然后再修改。
+
+'''
+
+baseHeader = {
+    "Accept": "application/json",
+    "Content-Type": "application/json;charset=UTF-8",
+}
+mPartHeader = {
+    "Referer": "https://live.kuaishou.com/u/3xphut7zrw7zcbq",
+}
+mHeader = baseHeader.copy()
+mHeader.update(mPartHeader)
+
+print(baseHeader)
+print(mHeader)

+ 86 - 0
user_agent.py

@@ -0,0 +1,86 @@
+# -*-coding:utf-8 -*-
+
+import random
+
+# 各种PC端
+user_agent_list_2 = [
+        # Opera
+        "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36 OPR/26.0.1656.60",
+        "Opera/8.0 (Windows NT 5.1; U; en)",
+        "Mozilla/5.0 (Windows NT 5.1; U; en; rv:1.8.1) Gecko/20061208 Firefox/2.0.0 Opera 9.50",
+        "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; en) Opera 9.50",
+        # Firefox
+        "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:34.0) Gecko/20100101 Firefox/34.0",
+        "Mozilla/5.0 (X11; U; Linux x86_64; zh-CN; rv:1.9.2.10) Gecko/20100922 Ubuntu/10.10 (maverick) Firefox/3.6.10",
+        # Safari
+        "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/534.57.2 (KHTML, like Gecko) Version/5.1.7 Safari/534.57.2",
+        # chrome
+        "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.2171.71 Safari/537.36",
+        "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/72.0.1271.64 Safari/537.11",
+        "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Chrome/66.0.648.133 Safari/534.16",
+        # 360
+        "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.101 Safari/537.36",
+        "Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko",
+        # 淘宝浏览器
+        "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.11 (KHTML, like Gecko) Chrome/20.0.1132.11 TaoBrowser/2.0 Safari/536.11",
+        # 猎豹浏览器
+        "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.71 Safari/537.1 LBBROWSER",
+        "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E; LBBROWSER)",
+        "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; QQDownload 732; .NET4.0C; .NET4.0E; LBBROWSER)",
+        # QQ浏览器
+        "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E; QQBrowser/7.0.3698.400)",
+        "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; QQDownload 732; .NET4.0C; .NET4.0E)",
+        # sogou浏览器
+        "Mozilla/5.0 (Windows NT 5.1) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.84 Safari/535.11 SE 2.X MetaSr 1.0",
+        "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; SV1; QQDownload 732; .NET4.0C; .NET4.0E; SE 2.X MetaSr 1.0)",
+        # maxthon浏览器
+        "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Maxthon/4.4.3.4000 Chrome/30.0.1599.101 Safari/537.36",
+        # UC浏览器
+        "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.122 UBrowser/4.0.3214.0 Safari/537.36",
+    ]
+    # 各种移动端
+user_agent_list_3 = [
+        # IPhone
+        "Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_3_3 like Mac OS X; en-us) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8J2 Safari/6533.18.5",
+        # IPod
+        "Mozilla/5.0 (iPod; U; CPU iPhone OS 4_3_3 like Mac OS X; en-us) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8J2 Safari/6533.18.5",
+        # IPAD
+        "Mozilla/5.0 (iPad; U; CPU OS 4_2_1 like Mac OS X; zh-cn) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8C148 Safari/6533.18.5",
+        "Mozilla/5.0 (iPad; U; CPU OS 4_3_3 like Mac OS X; en-us) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8J2 Safari/6533.18.5",
+        # Android
+        "Mozilla/5.0 (Linux; U; Android 2.2.1; zh-cn; HTC_Wildfire_A3333 Build/FRG83D) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1",
+        "Mozilla/5.0 (Linux; U; Android 2.3.7; en-us; Nexus One Build/FRF91) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1",
+        # QQ浏览器 Android版本
+        "MQQBrowser/26 Mozilla/5.0 (Linux; U; Android 2.3.7; zh-cn; MB200 Build/GRJ22; CyanogenMod-7) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1",
+        # Android Opera Mobile
+        "Opera/9.80 (Android 2.3.4; Linux; Opera Mobi/build-1107180945; U; en-GB) Presto/2.8.149 Version/11.10",
+        # Android Pad Moto Xoom
+        "Mozilla/5.0 (Linux; U; Android 3.0; en-us; Xoom Build/HRI39) AppleWebKit/534.13 (KHTML, like Gecko) Version/4.0 Safari/534.13",
+        # BlackBerry
+        "Mozilla/5.0 (BlackBerry; U; BlackBerry 9800; en) AppleWebKit/534.1+ (KHTML, like Gecko) Version/6.0.0.337 Mobile Safari/534.1+",
+        # WebOS HP Touchpad
+        "Mozilla/5.0 (hp-tablet; Linux; hpwOS/3.0.0; U; en-US) AppleWebKit/534.6 (KHTML, like Gecko) wOSBrowser/233.70 Safari/534.6 TouchPad/1.0",
+        # Nokia N97
+        "Mozilla/5.0 (SymbianOS/9.4; Series60/5.0 NokiaN97-1/20.0.019; Profile/MIDP-2.1 Configuration/CLDC-1.1) AppleWebKit/525 (KHTML, like Gecko) BrowserNG/7.1.18124",
+        # Windows Phone Mango
+        "Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; Titan)",
+        # UC浏览器
+        "UCWEB7.0.2.37/28/999",
+        "NOKIA5700/ UCWEB7.0.2.37/28/999",
+        # UCOpenwave
+        "Openwave/ UCWEB7.0.2.37/28/999",
+        # UC Opera
+        "Mozilla/4.0 (compatible; MSIE 6.0; ) Opera/UCWEB7.0.2.37/28/999"
+    ]
+
+# 返回一个随机的请求头 headers
+
+
+def getheaders():
+    UserAgent = random.choice(user_agent_list_2)  # 这里只用list1
+    headers = {'User-Agent': UserAgent}
+    return headers
+
+
+def getUA():
+    return random.choice(user_agent_list_2)

+ 26 - 0
utils/kuaishou.py

@@ -0,0 +1,26 @@
+#!/usr/bin/env python
+# -*- encoding: utf-8 -*-
+'''
+@File    :   kuaishou.py
+@Time    :   2019/05/26 00:15:03
+@Author  :   Liuyuqi 
+@Version :   1.0
+@Contact :   liuyuqi.gov@msn.cn
+@License :   (C)Copyright 2019
+@Desc    :   快手工具类
+'''
+
+class Kuaishou():
+    def __init__(self):
+        self.baseUrl = "https://live.kuaishou.com"
+        # baseUrl = "http://nginx.ok.yoqi.me:88"
+
+    def login(self, parameter_list):
+        pass
+
+    def comment(self, parameter_list):
+        pass
+
+    def saveData(self):
+        pass
+

+ 13 - 0
video/download.py

@@ -0,0 +1,13 @@
+#!/usr/bin/env python
+# -*- encoding: utf-8 -*-
+'''
+@File    :   download.py
+@Time    :   2019/05/25 21:55:32
+@Author  :   Liuyuqi 
+@Version :   1.0
+@Contact :   liuyuqi.gov@msn.cn
+@License :   (C)Copyright 2019
+@Desc    :   下载快手视频
+'''
+
+