steamdb cookie

import requests, re, os, pymysql, time
from lxml import etree
from steamdb.YDM import YDMHttp

# MYSQL_HOST = '192.168.107.229'
# MYSQL_POST = 3306
# MYSQL_DATABASE = 'spider_app'
# MYSQL_PASSWORD = '123456'
# MYSQL_USER = 'root'

MYSQL_HOST = '10.133.3.26'
MYSQL_POST = 3306
MYSQL_DATABASE = 'spider_app'
MYSQL_PASSWORD = 'root'
MYSQL_USER = 'root'

class steamdb(object):

    def __init__(self):
        requests.packages.urllib3.disable_warnings()
        self.headers = {
            "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.87 Safari/537.36",
            "Accept-Language": "zh-CN,zh;q=0.9,en;q=0.8",
        }
        self.post_headers = {
            "Content-Type": "application/x-www-form-urlencoded",
            "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.87 Safari/537.36",
            "Accept-Language": "zh-CN,zh;q=0.9,en;q=0.8",
        }
        self.data = {}
        self.post_url = ''
        self.session_url = 'https://captcha.su.baidu.com/session_cb?pub=377e4907e1a3b419708dbd00df9e8f79&callback=callback'
        self.image_url = 'https://captcha.su.baidu.com/image?session={}&pub=377e4907e1a3b419708dbd00df9e8f79'
        self.request = requests.Session()
        self.cookies = ''
        self.cfduid = ''
        self.cf_clearance = ''
        self.state = 0
        self.db = pymysql.connect(host=MYSQL_HOST, port=MYSQL_POST, database=MYSQL_DATABASE, user=MYSQL_USER,
                                  password=MYSQL_PASSWORD,
                                  charset='utf8', autocommit=True)
        self.cursor = self.db.cursor()
        while True:
            if self.state:
                break
            self.steamdb_info()
            self.session_info()
            self.image_info()
            self.post_info()

    def steamdb_info(self):
        response = self.request.get(url='https://steamdb.info' + self.post_url, headers=self.headers, verify=False)
        cookies = requests.utils.dict_from_cookiejar(response.cookies)
        if '__cfduid' in cookies.keys():
            self.cfduid = cookies['__cfduid']
        print('steamdb_info:{}'.format(cookies))
        etree_html = etree.HTML(response.content.decode('utf-8'))
        self.post_url = etree_html.xpath('//*[@id="challenge-form"]/@action')[0].strip()
        self.data['r'] = etree_html.xpath('//*[@id="challenge-form"]/input[1]/@value')[0].strip()
        self.data['id'] = etree_html.xpath('//*[@id="challenge-form"]/script/@data-ray')[0].strip()

    def session_info(self):
        html = self.request.get(url=self.session_url, headers=self.headers).content.decode('utf-8')
        self.data['captcha_challenge_field'] = re.findall(r'sessionstr":"(.+?)"}', html)[0]

    def image_info(self):
        path = os.path.dirname(os.path.abspath(__file__))
        image_response = self.request.get(url=self.image_url.format(self.data['captcha_challenge_field']),
                                          headers=self.headers)
        filename = '{}/yzm.jpg'.format(path)
        with open(filename, 'wb') as f:
            f.write(image_response.content)
        print('------')
        codetype = 1000
        # 超时时间,秒
        timeout = 60
        ydm = YDMHttp()
        result = ydm.run(filename, codetype, timeout)
        print(result)
        code = result[1]
        # code = input('请输入验证码:')
        print('code:{}'.format(code))
        self.data['manual_captcha_challenge_field'] = code

    def post_info(self):
        response = self.request.post(url='https://steamdb.info' + self.post_url, headers=self.post_headers,
                                     data=self.data, verify=False)
        cookies = requests.utils.dict_from_cookiejar(response.cookies)
        print('post_info:{}'.format(cookies))
        print(response.url)
        if cookies:
            if 'cf_clearance' in cookies.keys():
                self.cf_clearance = cookies['cf_clearance']
                self.cookies = '__cfduid={cfduid}; cf_clearance={cf_clearance}'.format(cfduid=self.cfduid,
                                                                                       cf_clearance=self.cf_clearance)
                self.cursor.execute(
                    'UPDATE spider_cookies set cookies="{}", update_time="{}" WHERE platform="steamdb"'.format(
                        self.cookies, time.strftime('%Y-%m-%d %X')))
                print(
                    'UPDATE spider_cookies set cookies="{}", update_time="{}" WHERE platform="steamdb"'.format(
                        self.cookies, time.strftime('%Y-%m-%d %X')))
                self.state = 1

if __name__ == '__main__':
    steamdb()

  

最新文章

  1. 漫谈Nuclear Web组件化入门篇
  2. 使用USRP探索无线世界 Part 1:USRP从入门到追踪飞机飞行轨迹
  3. Web 项目下载图片简单处理方式
  4. Git: untrack a file in local repo only and keep it in the remote repo
  5. VMware 虚拟机网络 组网问题
  6. hdu 2425 Hiking Trip
  7. 负margin使用权威指南
  8. Atom远程连接服务器报错服务器版本和客户端版本不一致
  9. shiro权限控制方式
  10. z-index的理解 z-index 属性仅在节点的 position 属性为 relative, absolute 或者 fixed 时生效.
  11. adapter pattern
  12. 分布式存储 CentOS6.5虚拟机环境搭建FastDFS-5.0.5集群(转载-2)
  13. HDFS概述(3)————HDFS Federation
  14. Brave Game(裸的巴什博弈)
  15. 关于foo的一个面试题
  16. 一)surging 微服务框架使用系列之surging 的准备工作rabbitmq安装(转载 https://www.cnblogs.com/alangur/p/8339905.html)
  17. lua --- 函数的本质
  18. luoguP3768 简单的数学题
  19. np.array()
  20. golang 防知乎 中文验证码 源码

热门文章

  1. DENEBOLA (See3CAM_CX3RDK) - CX3 Reference Design
  2. 浅谈Java三大特性
  3. 【hibernate】自定义转换器
  4. WPF之图片处理系列
  5. gulp遇到错误:The following tasks did not complete: default Did you forget to signal async completion?
  6. CCF-CSP题解 201809-3 元素选择器
  7. JavaScript图形实例:七彩线团
  8. Linux远程目录挂载
  9. 北京国际机场T3行李运维平台开发记录
  10. Blog 须知