代码之家  ›  专栏  ›  技术社区  ›  Duma

从$.Ajax站点到python3服务器的cookie

  •  0
  • Duma  · 技术社区  · 6 年前

    基本上我到处寻找答案(谷歌),我似乎找不到解决方案。基本上,我要做的是,我有一个python服务器,它可以抓取站点并将它们返回到JSON中的一个页面(取决于URL)。服务器从一个站点获取URL,在该站点中输入要搜索的位置和要搜索的内容。我想做的是在整个过程中添加cookie,因为你可以登录一些网站享受折扣。我不明白的是我应该如何将我的站点cookie发送到我的服务器。我正在使用简化代码首先测试/找出它是如何工作的。

    网站网址: http://localhost/looking/test.html

    服务器URL: http://localhost:8082

    服务器请求示例: http://localhost:8082/?search=dell&shop=rlyniceshop

    HTML代码

    <!doctype html>
    <html lang="en">
    <head>
            <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css" integrity="sha384-MCw98/SFnGE8fJT3GXwEOngsV7Zt27NXFoaoApmYm81iuXoPkFOJwJ8ERdknLPMO" crossorigin="anonymous">
            <script src="https://code.jquery.com/jquery-3.3.1.min.js" integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8=" crossorigin="anonymous"></script>
            <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.3/umd/popper.min.js" integrity="sha384-ZMP7rVo3mIykV+2+9J3UJ46jBk0WLaUAdn689aCwoqbBJiSnjAK/l8WvCWPIPm49" crossorigin="anonymous"></script>
            <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/js/bootstrap.min.js" integrity="sha384-ChfqqxuZUCnJSK3+MXmPNIyE6ZbWh2IMqE241rYiqJxyMiZ6OW/JmZQ5stwEULTy" crossorigin="anonymous"></script>
            <script src="https://cdn.jsdelivr.net/npm/js-cookie@2/src/js.cookie.min.js"></script>
            <meta charset="UTF-8">
    </head>
    
    <body>
        <button type="button" class="btn btn-outline-success" data-where="ASWO">Prisijungti</button>
    
        <script>
            if (Cookies.get('user') == null) {
                var user = Date.now();
                Cookies.set('user', user);
                console.log(Cookies.get('user'));
            }
    
            $('.btn-outline-success').on('click', function(){
                var url = 'http://localhost:8082/?search=dell&shop=pls';
                $.ajax({
                    url: url,
                    method: "POST",
                    cookie: "TestCookie2=AAA"
                });
            });
        </script>
    
    </body>
    

    蟒蛇代码

    from http.server import BaseHTTPRequestHandler, HTTPServer
    from bs4 import BeautifulSoup
    from urllib.parse import urlparse, parse_qs
    import urllib.request
    import json
    import os
    import re
    from selenium import webdriver
    from selenium.webdriver.chrome.options import Options
    from selenium.webdriver.common.keys import Keys
    
    options = Options()
    options.add_argument('--headless')
    options.add_argument('--disable-gpu')
    crm_path="PATH TO CHROME DRIVER"
    
    class Object:
        def toJSON(self):
            return json.dumps(self, default=lambda o: o.__dict__, sort_keys=True)
    
    class testHTTPServer_RequestHandler(BaseHTTPRequestHandler):
        def do_GET(self):
        self.send_response(200)
        self.send_header('Content-type','text/html; charset=utf-8')
        self.send_header('Access-Control-Allow-Origin', '*')
        self.end_headers()
        parsed = urlparse(self.path)
        wow = urllib.parse.parse_qs(parsed.query)
        luk = ''.join(wow['search'])
        wer = ''.join(wow['parde'])
        print(luk+wer);
        message = "COMPLEX JSON"
        self.wfile.write(bytes(message, "utf8"))
        return
    
    def run():
      print('starting server...')
      server_address = ('127.0.0.1', 8082)
      httpd = HTTPServer(server_address, testHTTPServer_RequestHandler)
      print('running server...')
      httpd.serve_forever()
    
    run()
    

    如果你认为我不清楚什么,请问。

    1 回复  |  直到 6 年前
        1
  •  0
  •   Duma    6 年前

    var dat = Cookies.get()
    
    $('.btn-outline-success').on('click', function(){
        var url = 'http://localhost:8082/?search=dell&parde=pls';
        $.ajax({
            url: url,
            method: "POST",
            data: dat
        });
    });
    

    def do_POST(self):
        self.send_response(200)
        self.send_header('Content-type','text/html; charset=utf-8')
        self.send_header('Access-Control-Allow-Origin', 'http://localhost')
        self.end_headers()
        content_length = int(self.headers['Content-Length'])
        body = self.rfile.read(content_length)
        parsed_q = urlparse(self.path)
        parsed_b = urlparse(body.decode("utf-8"))
        search_info = urllib.parse.parse_qs(parsed_q.query)
        user_info = urllib.parse.parse_qs(parsed_b.path)
        #print(''.join(wow['search']));
        print(search_info);
        print(user_info);
        message = "Json code"
        self.wfile.write(bytes(message, "utf8"))
        return
    

    from http.server import BaseHTTPRequestHandler, HTTPServer
    from bs4 import BeautifulSoup
    from urllib.parse import urlparse, parse_qs
    import urllib.request
    import json
    import os
    import re
    from selenium import webdriver
    from selenium.webdriver.chrome.options import Options
    from selenium.webdriver.common.keys import Keys
    
    options = Options()
    options.add_argument('--headless')
    options.add_argument('--disable-gpu')
    crm_path="C:\\Users\\Duma\\Desktop\\site\\BrowersDriver\\chromedriver.exe"
    
    class Object:
        def toJSON(self):
            return json.dumps(self, default=lambda o: o.__dict__, sort_keys=True)
    
    class testHTTPServer_RequestHandler(BaseHTTPRequestHandler):
        def do_POST(self):
            self.send_response(200)
            self.send_header('Content-type','text/html; charset=utf-8')
            self.send_header('Access-Control-Allow-Origin', 'http://localhost')
            self.end_headers()
            content_length = int(self.headers['Content-Length'])
            body = self.rfile.read(content_length)
            parsed_q = urlparse(self.path)
            parsed_b = urlparse(body.decode("utf-8"))
            search_info = urllib.parse.parse_qs(parsed_q.query)
            user_info = urllib.parse.parse_qs(parsed_b.path)
            #print(''.join(wow['search']));
            print(search_info);
            print(user_info);
            message = "Json code"
            self.wfile.write(bytes(message, "utf8"))
            return
    
        def do_GET(self):
            self.send_response(200)
            self.send_header('Content-type','text/html; charset=utf-8')
            self.send_header('Access-Control-Allow-Origin', '*')
            self.end_headers()
            message = "Nothing to see here."
            self.wfile.write(bytes(message, "utf8"))
            return
    
    def run():
      print('starting server...')
      server_address = ('127.0.0.1', 8082)
      httpd = HTTPServer(server_address, testHTTPServer_RequestHandler)
      print('running server...')
      httpd.serve_forever()
    
    run()
    

    <!doctype html>
    <html lang="en">
        <head>
                <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css" integrity="sha384-MCw98/SFnGE8fJT3GXwEOngsV7Zt27NXFoaoApmYm81iuXoPkFOJwJ8ERdknLPMO" crossorigin="anonymous">
                <script src="https://code.jquery.com/jquery-3.3.1.min.js" integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8=" crossorigin="anonymous"></script>
                <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.3/umd/popper.min.js" integrity="sha384-ZMP7rVo3mIykV+2+9J3UJ46jBk0WLaUAdn689aCwoqbBJiSnjAK/l8WvCWPIPm49" crossorigin="anonymous"></script>
                <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/js/bootstrap.min.js" integrity="sha384-ChfqqxuZUCnJSK3+MXmPNIyE6ZbWh2IMqE241rYiqJxyMiZ6OW/JmZQ5stwEULTy" crossorigin="anonymous"></script>
                <script src="https://cdn.jsdelivr.net/npm/js-cookie@2/src/js.cookie.min.js"></script>
                <meta charset="UTF-8">
        </head>
    
        <body>
            <button type="button" class="btn btn-outline-success" data-where="ASWO">Prisijungti</button>
    
            <script>
                if (Cookies.get('user') == null) {
                    var user = Date.now();
                    Cookies.set('user', user);
                    console.log(Cookies.get('user'));
                }
    
                var dat = Cookies.get()
    
                $('.btn-outline-success').on('click', function(){
                    var url = 'http://localhost:8082/?search=dell&parde=pls';
                    $.ajax({
                        url: url,
                        method: "POST",
                        data: dat
                    });
                });
    
    
            </script>
    
        </body>
    </html>