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. SpringBoot学习【一】----- HelloWord

    springboot是什么 Spring Boot可以轻松创建可以运行的独立的,生产级的基于Spring的应用程序. 大多数Spring Boot应用程序只需要很少的Spring配置. 提供了一个运行 ...

  2. matlab安装出现“无法访问所在网络位置”的正确解决办法

    今天安装matlab时出现了如下错误:无法访问您试图使用的功能所在的网络位置,单击"确认"重试或者在下面输入包含"vcredist.msc"的文件夹路径. (由 ...

  3. Jmeter性能测试配置

    目录 Jmeter检查点/断言 Jmeter事务 Jmeter集合点 Jmeter检查点/断言 在上一章节中,我们通过调试脚本,通过人工验证脚本可以完成业务功能, 但在性能测试中,我们希望能通过自动验 ...

  4. 非线性函数的最小二乘拟合及在Jupyter notebook中输入公式 [原创]

    突然有个想法,能否通过学习一阶RC电路的阶跃响应得到RC电路的结构特征——时间常数τ(即R*C).回答无疑是肯定的,但问题是怎样通过最小二乘法.正规方程,以更多的采样点数来降低信号采集噪声对τ估计值的 ...

  5. 多个DataTable的合并成一个新表

    多个DataTable的合并成一个新表 参考:https://www.cnblogs.com/JuneZhang/archive/2011/12/11/2284243.html

  6. 我在知识星球上创建了免费的Web3D学习的星球~

    大家好,我是YYC. 我在知识星球创建了一个免费的星球-"YYC的Web 3D旅程",欢迎大家加入- 本星球完全免费,致力于打造专业的Web 3D技术学习区,分享各种3D技术和信息 ...

  7. SpringBoot初探JSP页面可能遇到的坑

    第一个坑就是依赖没有配了 网上很多依赖的配置代码 在pom.xml文件的dependencies添加以下依赖 <!-- servlet依赖 --> <dependency> & ...

  8. Idea集成及使用svn插件

    1 idea集成svn 1.1 svn是什么? SVN是subversion的缩写,是一个开放源代码的版本控制系统,通过采用分支管理系统的高效管理,简而言之就是用于多个人共同开发同一个项目,实现共享资 ...

  9. 在 Java 中如何比较日期?

    在 Java 中有多种方法可以比较日期,日期在计算机内部表示为(long型)时间点--自1970年1月1日以来经过的毫秒数.在Java中,Date是一个对象,包含多个用于比较的方法,任何比较两个日期的 ...

  10. 【译】gRPC vs HTTP APIs

    本文翻译自 ASP.NET Blog | gRPC vs HTTP APIs,作者 James,译者 Edison Zhou. 写在开头 现在,ASP.NET Core使开发人员可以构建gRPC服务. ...