Üye
Üyelik Tarihi: 23-08-2016
Yorum Sayısı: 83
Konu Sayısı: 7
Rep Puanı:
0
10-04-2019, Saat: 17:56
(Son Düzenleme: 15-04-2019, Saat: 12:56, Düzenleyen: gecemor.)
Merhabalar arkadaşlar sorunum sorunum şöyle:
Login olacağım bir site var ve bu siteye çerez kullanarak giriş yapıyordum.
Çerezleri selenium ile login olup o şekilde alarak requests kütüphanesindeki session a yolluyordum ve siteye get/post isteklerinde bulunuyordum, fakat artık bu yöntem işe yaramıyor.
Aynı çerezi tekrar kullanırsam session expired hatası alıyorum. İşin tuhaf yanı tarayıcıda login olup da aynı şekilde tarayıcıdan urlye get attığım zaman çalışıyor ve veri alabiliyorum.
Tarayıcıdaki çerez ile kendi çerezlerim aynı ama requests ile veri alamıyorum. Okuduğunuz için teşekkürler
Şimdi Mehmet, örnek bir kod olsa karşılaştırma yaparak ne eksik ne fazla belki bir yorum yapabilirdik ama elde bir şey olmayınca diyecek bir şey yok. Çünkü dedin ki daha önce requests session ile yapıyordum ama artık işe yaramıyor... Hiç giriş yapamasaydın sana bir iki login örneği yazıverirdim ama eğer durduk yere değiştiyse bu durum demekki site farklı çerezler eklemiş. Veya header'daki host, referer veya user-agent incelemesi yapmaya başlamışlardır. Yani çerezlerin aynı olduğundan eminsen bence header'lara göz at. İlk olarak referer ekle ve o sitenin adresini yaz. Sonra user-agent ekle, bazı siteler user-agent 'a dikkat eder eğer istemci mozilla falan değil de python veya boş görüyolarsa bot vs gibi şeylere önlem olarak gelen isteği geri çevirebilirler.
örnek;
headers={"User-Agent":"Mozilla"}
requests.get("adres", headers=headers)
Üye
Üyelik Tarihi: 23-08-2016
Yorum Sayısı: 83
Konu Sayısı: 7
Rep Puanı:
0
gecemor header eklemiştim Chrome den giriyorum.
Proxy vs de eklemiştim kodu yarın özelden atsam olur mu acaba
KOD YAZMAK İNSANA DÜŞÜNMEYİ ÖĞRETİR
son zamanlarda önceki gibi müsait olamıyorum, ilgilenemeyebilirim özelden. Zaten gerekli her şeyi de yapmışsın, artık senin inceleyerek çözmen gereken bi durum. Cookie, header vs vs mutlaka bir yerlerde eksiklik vardır. Chrome dan geliştirici seçeneklerinden siteye girdiğinde network bölümüne bak, oradaki elementlerin request header'larını incele, kendininkilerle kıyasla. Aklıma gelenler bunlar.
Üye
Üyelik Tarihi: 23-08-2016
Yorum Sayısı: 83
Konu Sayısı: 7
Rep Puanı:
0
KOD YAZMAK İNSANA DÜŞÜNMEYİ ÖĞRETİR
bağlantı bende açılmıyor, ayrıca dediklerimi zaten ben demeden eklediysen geri kalanı senin deneme yanılma ile bulacağın bir şey, benlik bir şey yok gibi.
Üye
Üyelik Tarihi: 23-08-2016
Yorum Sayısı: 83
Konu Sayısı: 7
Rep Puanı:
0
gecemor hocam peki google driveye requests ve beautiful soup ile login olabilir miyiz yada başka bir kütüphane kullanarak?
KOD YAZMAK İNSANA DÜŞÜNMEYİ ÖĞRETİR
(11-04-2019, Saat: 13:17)oktay811 Nickli Kullanıcıdan Alıntı: Patebin yasaklı site, proxy ile açmak lazım.
PHP Kod:
# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file 'NewRRBot.ui' # # Created by: PyQt5 UI code generator 5.6 # # WARNING! All changes made in this file will be lost!
from PyQt5 import QtCore, QtGui, QtWidgets from selenium import webdriver import getpass import os, sys,requests from selenium import webdriver from requestium import Session, Keys from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.common.proxy import Proxy, ProxyType from selenium.webdriver.support import expected_conditions as ec import time import requests import pickle import os from PyQt5.QtCore import * import PyQt5 import threading import psutil from bs4 import BeautifulSoup import re import getpass os.environ['QT_QPA_PLATFORM_PLUGIN_PATH'] = os.path.join(os.path.dirname(PyQt5.__file__), "plugins") a ="" class Ui_Form(object): def setupUi(self, Form): self.url = "http://elulydouhjlrqv.llfrp.nl4.gsr.awhoer.net/main/content" self.sterk_bas = "http://elulydouhjlrqv.llfrp.nl4.gsr.awhoer.net/perks/up/1/1" self.egitim_url = "http://elulydouhjlrqv.llfrp.nl4.gsr.awhoer.net/perks/up/2/1" self.dayaniklilik_url = "http://elulydouhjlrqv.llfrp.nl4.gsr.awhoer.net/perks/up/3/1" self.iptal = "http://sss.elulydouhjlrqv.llfrp.nl4.gsr.awhoer.net/main/stop_perk" self.P_Name = "http://elulydouhjlrqv.llfrp.nl4.gsr.awhoer.net/slide/profile/" self.header = {"user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36"} self.payload = {} self.pc_name = getpass.getuser() try: os.mkdir('C:/Users/' + self.pc_name + '/desktop/google_webdriver') except FileExistsError: pass Form.setObjectName("Form") Form.resize(457, 450) self.lblK_adi = QtWidgets.QLabel(Form) self.lblK_adi.setGeometry(QtCore.QRect(20, 10, 151, 31)) self.lblK_adi.setObjectName("lblK_adi") self.lblKuvvet = QtWidgets.QLabel(Form) self.lblKuvvet.setGeometry(QtCore.QRect(20, 60, 157, 21)) self.lblKuvvet.setObjectName("lblKuvvet") self.lblDayaniklilik = QtWidgets.QLabel(Form) self.lblDayaniklilik.setGeometry(QtCore.QRect(20, 130, 157, 20)) self.lblDayaniklilik.setObjectName("lblDayaniklilik") self.lblEgitim = QtWidgets.QLabel(Form) self.lblEgitim.setGeometry(QtCore.QRect(20, 100, 157, 13)) self.lblEgitim.setObjectName("lblEgitim") self.btnKuvvet = QtWidgets.QPushButton(Form) self.btnKuvvet.setGeometry(QtCore.QRect(160, 120, 71, 31)) self.btnKuvvet.setObjectName("btnKuvvet") self.btnEgitim = QtWidgets.QPushButton(Form) self.btnEgitim.setGeometry(QtCore.QRect(240, 120, 81, 31)) self.btnEgitim.setObjectName("btnEgitim") self.btnDayaniklilik = QtWidgets.QPushButton(Form) self.btnDayaniklilik.setEnabled(True) self.btnDayaniklilik.setGeometry(QtCore.QRect(330, 120, 91, 31)) self.btnDayaniklilik.setAutoFillBackground(False) self.btnDayaniklilik.setCheckable(False) self.btnDayaniklilik.setAutoRepeat(False) self.btnDayaniklilik.setAutoExclusive(True) self.btnDayaniklilik.setAutoDefault(False) self.btnDayaniklilik.setDefault(False) self.btnDayaniklilik.setFlat(False) self.btnDayaniklilik.setObjectName("btnDayaniklilik") self.lblBitisSaati = QtWidgets.QLabel(Form) self.lblBitisSaati.setGeometry(QtCore.QRect(20, 170, 157, 13)) self.lblBitisSaati.setObjectName("lblBitisSaati") self.lblSuankiSaat = QtWidgets.QLabel(Form) self.lblSuankiSaat.setGeometry(QtCore.QRect(20, 200, 71, 16)) self.lblSuankiSaat.setObjectName("lblSuankiSaat") self.txtAntLink = QtWidgets.QLineEdit(Form) self.txtAntLink.setGeometry(QtCore.QRect(160, 200, 131, 20)) self.txtAntLink.setObjectName("txtAntLink") self.txtPayload = QtWidgets.QLineEdit(Form) self.txtPayload.setGeometry(QtCore.QRect(160, 170, 131, 20)) self.txtPayload.setObjectName("txtPayload") self.antreman_savas = QtWidgets.QPushButton(Form) self.antreman_savas.setGeometry(QtCore.QRect(320, 200, 101, 23)) self.antreman_savas.setObjectName("antreman_savas") self.lineEdit = QtWidgets.QLineEdit(Form) self.lineEdit.setGeometry(QtCore.QRect(160, 240, 113, 20)) self.lineEdit.setObjectName("lineEdit") self.lineEdit_2 = QtWidgets.QLineEdit(Form) self.lineEdit_2.setGeometry(QtCore.QRect(280, 240, 61, 20)) self.lineEdit_2.setObjectName("lineEdit_2") self.pushButton = QtWidgets.QPushButton(Form) self.pushButton.setGeometry(QtCore.QRect(200, 290, 75, 23)) self.pushButton.setObjectName("pushButton") self.label = QtWidgets.QLabel(Form) self.label.setGeometry(QtCore.QRect(110, 240, 47, 13)) self.label.setObjectName("label") self.temiz = "" self.current_time = "" self.basilan_stad ="" self.proxy = "" self.port = "" self.proxies = {} self.retranslateUi(Form) QtCore.QMetaObject.connectSlotsByName(Form)
def retranslateUi(self, Form): _translate = QtCore.QCoreApplication.translate Form.setWindowTitle(_translate("Form", "RR Bot")) self.lblK_adi.setText(_translate("Form", "Kullanici Adi")) self.lblKuvvet.setText(_translate("Form", "Kuvvet")) self.lblDayaniklilik.setText(_translate("Form", "Dayanikliklik")) self.lblEgitim.setText(_translate("Form", "Egitim")) self.btnKuvvet.setText(_translate("Form", "Kuvvet Bas")) self.btnEgitim.setText(_translate("Form", "Egitim Bas")) self.btnDayaniklilik.setText(_translate("Form", "Dayaniklilik bas")) self.lblBitisSaati.setText(_translate("Form", "Bitis Saati")) self.lblSuankiSaat.setText(_translate("Form", "Şuanki Saat")) self.antreman_savas.setText(_translate("Form", "Antreman Savas")) self.pushButton.setText(_translate("Form", "Giris yap")) self.label.setText(_translate("Form", "Proxy")) self.pushButton.clicked.connect(self.OK) self.btnKuvvet.clicked.connect(self.KUVVET_BAS_OK) self.btnEgitim.clicked.connect(self.EGITIM_BAS_OK) self.btnDayaniklilik.clicked.connect(self.DAYANIKLILIK_BAS_OK)
def giris_yap(self,stop_event): if not stop_event.isSet(): self.prxport = "{}:{}".format(self.lineEdit.text(), self.lineEdit_2.text()) print(self.prxport) self.proxyDict = { "http": self.prxport, "http": self.prxport, "ftp": self.prxport } # Configure Proxy Option prox = Proxy() prox.proxy_type = ProxyType.MANUAL
# Proxy IP & Port prox.http_proxy = self.prxport prox.socks_proxy = self.prxport prox.ssl_proxy = self.prxport # Configure capabilities capabilities = webdriver.DesiredCapabilities.CHROME prox.add_to_capabilities(capabilities) self.driver_path = "C:/Users/" + getpass.getuser() + r"/Desktop/webdriver/chromedriver.exe" url = "http://elulydouhjlrqv.llfrp.nl4.gsr.awhoer.net" self.browser = webdriver.Chrome(executable_path=self.driver_path, desired_capabilities=capabilities) self.browser.get(url) self.wait = WebDriverWait(self.browser, 30) link = self.wait.until(ec.visibility_of_element_located((By.XPATH, "//*[@id='sa_add2']/div[2]/a[2]/div"))) link.click() e_posta = self.wait.until(ec.visibility_of_element_located((By.XPATH, "//*[@id='identifierId']"))) e_posta.send_keys('ahmettanriverdi888') ileri = self.wait.until(ec.visibility_of_element_located((By.XPATH, "//*[@id='identifierNext']/content/span"))) ileri.click() sifre = self.wait.until(ec.visibility_of_element_located((By.XPATH, "//*[@id='password']/div[1]/div/div[1]/input"))) sifre.send_keys("ahmett1996") ileri_2 = self.wait.until(ec.visibility_of_element_located((By.XPATH, "//*[@id='passwordNext']/content/span"))) ileri_2.click() self.request() def request(self): s = requests.Session() cookies = self.browser.get_cookies() self.header = { "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36"} self.cookie = {cookies[0]["name"]: cookies[0]["value"], cookies[1]["name"]: cookies[1]["value"], cookies[2]["name"]: cookies[2]["value"], cookies[3]["name"]: cookies[3]["value"], cookies[4]["name"]: cookies[4]["value"], cookies[5]["name"]: cookies[5]["value"], cookies[6]["name"]: cookies[6]["value"], cookies[7]["name"]: cookies[7]["value"], cookies[8]["name"]: cookies[8]["value"], cookies[9]["name"]: cookies[9]["value"], cookies[10]["name"]: cookies[10]["value"], cookies[11]["name"]: cookies[11]["value"]} for cookiee in cookies: print(cookiee['name'], cookiee['value']) s.cookies.set(cookiee['name'], cookiee['value']) return s def payload_bul(self): req = self.request().get(self.P_Name + self.cookie["rr_id"], cookies=self.cookie, headers=self.header) c = (str(req.text).find("var c_html = '")) # payloadın başlangıc konumu c_2 = str(req.text)[c:c + 100] #payload kısmının "var c_html = '" kısmından sonraki 100 kelimeyi alıyor start = 0 for i in range(100): if ";" not in c_2[0:i]: # eğer ; c_2 nin harfleri içerisinde yoksa startı 1 arttır. start+=1
#print(start) self.payload = (str(req.text)[c:c+start]).strip("var c_html = ';") self.data = {"c":self.payload} return self.payload def baglan(self, stop_event): if not stop_event.isSet(): req = requests.get(self.P_Name+self.cookie["rr_id"],params=self.payload_bul(), cookies=self.cookie, headers=self.header, proxies =self.proxyDict) print(req.text) soup = BeautifulSoup(req.content, "html.parser") self.kaynak = soup.find_all("span", {"class": "slide_karma tip pointer"}) leveller = re.findall("\d+", str(self.kaynak)) self.PROFILE_NAME_OK() self.lblKuvvet.setText("Kuvvet "+leveller[1]) self.lblEgitim.setText("Eğitim "+leveller[3]) self.lblDayaniklilik.setText("Dayanıklılık "+leveller[-1]) print(self.payload_bul()) def OK(self):
self.stop_event=threading.Event() self.c_thread=threading.Thread(target=self.giris_yap, args=(self.stop_event,)) self.c_thread.start()
def profil_name(self, stop_event): if not stop_event.isSet(): req = requests.get(self.P_Name+self.cookie["rr_id"], cookies=self.cookie, headers=self.header, proxies = self.proxyDict) soup = BeautifulSoup(req.content, "html.parser") kaynak = soup.find_all("h1", {"class": "white hide_for_name"}) print(kaynak) for i in kaynak[0]: self.lblK_adi.setStyleSheet("color: green") self.lblK_adi.setText(str(i))
def PROFILE_NAME_OK(self): self.stop_event=threading.Event() self.c_thread=threading.Thread(target=self.profil_name, args=(self.stop_event,)) self.c_thread.start()
def kuvvet_bas(self, stop_event): if not stop_event.isSet(): req = requests.get(self.sterk_bas, params=self.payload_bul(), cookies=self.cookie, headers=self.header, proxies = self.proxyDict) print("kuvvet basıldı -----------") print(req.text) self.STAT_BITIS_OK() self.basilan_stad= "k"
def KUVVET_BAS_OK(self): self.stop_event=threading.Event() self.c_thread=threading.Thread(target=self.kuvvet_bas, args=(self.stop_event,)) self.c_thread.start()
def egitim_bas(self, stop_event): if not stop_event.isSet(): req = requests.get(self.egitim_url, params=self.payload_bul(), cookies=self.cookie, headers=self.header, proxies =self.proxyDict) print(req.text) self.STAT_BITIS_OK() self.basilan_stad = "e"
def EGITIM_BAS_OK(self): self.stop_event=threading.Event() self.c_thread=threading.Thread(target=self.egitim_bas, args=(self.stop_event,)) self.c_thread.start()
def dayaniklilik_bas(self, stop_event): if not stop_event.isSet(): req = requests.get(self.dayaniklilik_url, params=self.payload_bul(), cookies=self.cookie, headers=self.header, proxies =self.proxyDict) print(req.text) self.STAT_BITIS_OK() self.basilan_stad = "d"
def DAYANIKLILIK_BAS_OK(self): self.stop_event=threading.Event() self.c_thread=threading.Thread(target=self.dayaniklilik_bas, args=(self.stop_event,)) self.c_thread.start()
def stat_bitis_saati(self, stop_event): if not stop_event.isSet(): req = requests.get(self.url, params=self.payload_bul(), cookies=self.cookie, headers=self.header, proxies=self.proxyDict) soup = BeautifulSoup(req.content, "html.parser") temizle = soup.find_all("div", {"class": "perk_item ib_border hov pointer"}) soup_2 = BeautifulSoup(str(temizle), "html.parser") temizle_2 = soup_2.find_all("div", {"class": "small"}) for i in temizle_2[0]: kalan_zaman = re.findall("[0-9]+:[0-9]+$", i) for temiz in kalan_zaman: self.temiz = str(temiz) self.lblBitisSaati.setStyleSheet("color: red") self.lblBitisSaati.setText("Stat bitiş: "+str(temiz)) print("Stat Bitiş Saati",self.temiz)
def STAT_BITIS_OK(self): self.stop_event=threading.Event() self.c_thread=threading.Thread(target=self.stat_bitis_saati, args=(self.stop_event,)) self.c_thread.start()
def update_label(self, stop_event): if not stop_event.isSet(): self.current_time = str(time.strftime("%H:%M")) self.lblSuankiSaat.setText(self.current_time) if self.basilan_stad == "k": if self.current_time > self.temiz: print("K tamamlandı") self.KUVVET_BAS_OK() req = requests.get(self.P_Name + self.cookie["rr_id"], params=self.payload_bul(), cookies=self.cookie, headers=self.header, proxies=self.proxyDict) print(req.text) soup = BeautifulSoup(req.content, "html.parser") self.kaynak = soup.find_all("span", {"class": "slide_karma tip pointer"}) leveller = re.findall("\d+", str(self.kaynak)) self.lblKuvvet.setText("Kuvvet " + leveller[1]) self.lblEgitim.setText("Eğitim " + leveller[3]) self.lblDayaniklilik.setText("Dayanıklılık " + leveller[-1]) elif self.current_time < self.temiz: print("K zamanı var") elif self.basilan_stad == "e": if self.current_time > self.temiz: print("e tamamlandı") self.EGITIM_BAS_OK() req = requests.get(self.P_Name + self.cookie["rr_id"], params=self.payload_bul(), cookies=self.cookie, headers=self.header, proxies=self.proxyDict) print(req.text) soup = BeautifulSoup(req.content, "html.parser") self.kaynak = soup.find_all("span", {"class": "slide_karma tip pointer"}) leveller = re.findall("\d+", str(self.kaynak)) self.lblKuvvet.setText("Kuvvet " + leveller[1]) self.lblEgitim.setText("Eğitim " + leveller[3]) self.lblDayaniklilik.setText("Dayanıklılık " + leveller[-1]) elif self.current_time < self.temiz: print("e zamanı var") elif self.basilan_stad == "d": if self.current_time > self.temiz: print("tamamlandı") self.DAYANIKLILIK_BAS_OK() req = requests.get(self.P_Name + self.cookie["rr_id"], params=self.payload_bul(), cookies=self.cookie, headers=self.header, proxies=self.proxyDict) print(req.text) soup = BeautifulSoup(req.content, "html.parser") self.kaynak = soup.find_all("span", {"class": "slide_karma tip pointer"}) leveller = re.findall("\d+", str(self.kaynak)) self.lblKuvvet.setText("Kuvvet " + leveller[1]) self.lblEgitim.setText("Eğitim " + leveller[3]) self.lblDayaniklilik.setText("Dayanıklılık " + leveller[-1]) elif self.current_time < self.temiz: print("d zamanı var") else: print("Stad basılmamış") def UPDATE_LABEL_OK(self): self.stop_event=threading.Event() self.c_thread=threading.Thread(target=self.update_label, args=(self.stop_event,)) self.c_thread.start()
def main(): import sys app = QtWidgets.QApplication(sys.argv) Form = QtWidgets.QWidget() ui = Ui_Form() ui.setupUi(Form) Form.show()
timer = QTimer() timer.timeout.connect(ui.UPDATE_LABEL_OK) timer.start(1000) sys.exit(app.exec_()) main()
def kill_proc_tree(pid, including_parent=True): parent = psutil.Process(pid) if including_parent: parent.kill()
me = os.getpid() kill_proc_tree(me)
evet alternatif olarak https://paste.ubuntu.com/ tercihimdir.
(11-04-2019, Saat: 14:14)Mehmet Zerey Nickli Kullanıcıdan Alıntı: gecemor hocam peki google driveye requests ve beautiful soup ile login olabilir miyiz yada başka bir kütüphane kullanarak?
Bunun için requests ve benzeri manuel yöntemlere gerek yok google 'ın kendi api servisi var, python için de "googleapiclient" kütüphanesi var. Her zaman için varsa api kullanmak daha zahmetsizdir.
Vip üye
Üyelik Tarihi: 24-01-2017
Yorum Sayısı: 690
Konu Sayısı: 23
Rep Puanı:
11
11-04-2019, Saat: 20:12
(Son Düzenleme: 11-04-2019, Saat: 20:18, Düzenleyen: oktay811.)
Mehmet Zerey
hocam senin sicriptin içinde
PHP Kod:
self.url = "http://elulydouhjlrqv.llfrp.nl4.gsr.awhoer.net/main/content" self.sterk_bas = "http://elulydouhjlrqv.llfrp.nl4.gsr.awhoer.net/perks/up/1/1" self.egitim_url = "http://elulydouhjlrqv.llfrp.nl4.gsr.awhoer.net/perks/up/2/1" self.dayaniklilik_url = "http://elulydouhjlrqv.llfrp.nl4.gsr.awhoer.net/perks/up/3/1" self.iptal = "http://sss.elulydouhjlrqv.llfrp.nl4.gsr.awhoer.net/main/stop_perk" self.P_Name = "http://elulydouhjlrqv.llfrp.nl4.gsr.awhoer.net/slide/profile/"
Bu adresler var mı? Yoksa ben web proxy ile açtığım için mi bunları böyle değiştirdi? anlamadım
web proxy ile açtığım içinmiş, oyunu açtım, başladım oynamaya, sizin yapmaya çalıştığınız tam olarak oyun için bot yapmak mı?
|