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()

  

steamdb cookie的更多相关文章

  1. 超大 Cookie 拒绝服务攻击

    有没有想过,如果网站的 Cookie 特别多特别大,会发生什么情况? 不多说,马上来试验一下: for (i = 0; i < 20; i++) document.cookie = i + '= ...

  2. IE10、IE11 User-Agent 导致的 ASP.Net 网站无法写入Cookie 问题

    你是否遇到过当使用一个涉及到Cookie操作的网站或者管理系统时,IE 6.7.8.9下都跑的好好的,唯独到了IE10.11这些高版本浏览器就不行了?好吧,这个问题码农连续2天内遇到了2次.那么,我们 ...

  3. 解决cookie跨域访问

    一.前言 随着项目模块越来越多,很多模块现在都是独立部署.模块之间的交流有时可能会通过cookie来完成.比如说门户和应用,分别部署在不同的机器或者web容器中,假如用户登陆之后会在浏览器客户端写入c ...

  4. jquery插件的用法之cookie 插件

    一.使用cookie 插件 插件官方网站下载地址:http://plugins.jquery.com/cookie/ cookie 插件的用法比较简单,直接粘贴下面代码示例: //生成一个cookie ...

  5. 一个诡异的COOKIE问题

    今天下午,发现本地的测试环境突然跑不动了,thinkphp直接跑到异常页面,按照正常的排错思路,直接看thinkphp的log 有一条 [ error ] [2]setcookie() expects ...

  6. [转载]Cookie/Session的机制与安全

    Cookie和Session是为了在无状态的HTTP协议之上维护会话状态,使得服务器可以知道当前是和哪个客户在打交道.本文来详细讨论Cookie和Session的实现机制,以及其中涉及的安全问题. 因 ...

  7. jquery.cookie的使用

    今天想到了要为自己的影像日记增加赞的功能,并且需要用到cookie. 记得原生的js操作cookie也不是很麻烦的,但似乎jquery更简单,不过相比原生js,需要额外引入2个文件,似乎又不是很好,但 ...

  8. 跨域问题,前端主动向后台发送cookie

    跨域是什么? 从一个域名的网页访问另一个域名的资源,就会出现跨域.只要协议.端口.域名有一个不同就会出现跨域 例如: 1.协议不同  http://www.baidu.com:80 和 https:/ ...

  9. 【流量劫持】沉默中的狂怒 —— Cookie 大喷发

    精简版:http://www.cnblogs.com/index-html/p/mitm-cookie-crack.html 前言 上一篇文章 讲解了如何借助前端技术,打造一个比 SSLStrip 更 ...

随机推荐

  1. 基于USB3.0的双目相机测试小结之CC1605配合CS5642 双目 500w摄像头

    基于USB3.0的双目相机测试小结之CC1605配合CS5642  双目 500w摄像头 CC1605双目相机评估板可以配合使用柴草电子绝大多数摄像头应用 如:OV5640.OV5642.MT9P03 ...

  2. 《JavaScript 模式》知识点小抄本(下)

    介绍 最近开始给自己每周订个学习任务,学习结果反馈为一篇文章的输出,做好学习记录. 这一周(02.25-03.03)我定的目标是<JavaScript 模式>的第七章学习一遍,学习结果的反 ...

  3. WebSocket重连实现

    方式一.使用第三方库实现 比如:reconnecting-websocket.jsReconnectingWebSocket,代码:https://github.com/joewalnes/recon ...

  4. drf源码分析系列---认证

    认证的使用 from rest_framework.authentication import BaseAuthentication from api import models # 认证类 clas ...

  5. 数组(Array)和列表(ArrayList)有什么区别?什么时候应该使用Array而不是ArrayList?

    下面列出了Array和ArrayList的不同点:Array可以包含基本类型和对象类型,ArrayList只能包含对象类型.Array大小是固定的,ArrayList的大小是动态变化的.ArrayLi ...

  6. Centos7上离线搭建PHP-7.2.26

    一.下载php源安装包,解压至/home/php目录下 下载地址:https://www.php.net/distributions/php-7.2.26.tar.gz [root@localhost ...

  7. CentOS7.2下部署zabbix4.0

    整体部署采用centos7+php+apache+mariadb 基础环境配置优化 1. 关闭防火墙 [root@monitor_53 ~]$ systemctl stop firewalld [ro ...

  8. Cesium案例解析(二)——ImageryLayers影像图层

    目录 1. 概述 2. 实例 2.1. ImageryLayers.html 2.2. ImageryLayers.js 2.2.1. 代码 2.2.2. 解析 3. 结果 1. 概述 Cesium支 ...

  9. 原创 Hive left join 技巧总结

    根据工作中经验总结出来   left  join  常用的  使用注意点:    A     Left    join   B    on   A.id =  B.id 第一种情况: 如果 A 表  ...

  10. Asp.Net MVC中记录错误日志保存到本地txt文件

    为了方便查询系统出错弄个错误日志出来对于维护运维来说是很有必要的. 1.在Asp.Net MVC项目中的App_Start添加一个用于处理异常类的文件ErrorLog让他继承HandleErrorAt ...