Python Mechanize ile Google Login

Merhaba arkadaşlar
şöyle bir hata alıyorum submit yapmıyor google login şekli şu an ilerlemeli email ilerle (Next) şifre ilerle (Next)
şeklinde ve oturum actıktan sonra kullanıcı sayfasını print yazdırmak istiyorum buraya kadar gelebildim yardımlarınızı rica ediyorum.

import mechanize
br=mechanize.Browser()
br.set_handle_robots(False)

br.addheaders=[('User-agent', "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36")]
op = br.open("https://accounts.google.com/signin/v2/identifier?flowName=GlifWebSignIn&flowEntry=ServiceLogin")
br.select_form(nr=0)
br.form['identifier'] = 'email@gmail.com'
br.method="POST"
br.submit()
br.response().read()
br.form = list(br.forms())[0]
br.form['password'] = 'şifre'
br.method="POST"
br.response().read()

Merhaba. Google giriş ekranına dikkat ederseniz, önce email girmenizi istiyor ve daha sonra bunu onaylayarak size şifre girmeniz gereken ekranı gösteriyor. Yani dinamik bir giriş sayfası. Bu yüzden, bu normal kütüphaneler ile giriş yapabilmeniz neredeyse imkansız. En azından yukarıda kodu yazdığınız şekilde.

Tam olarak ne yapmak istediğinizi yazarsanız, daha iyi yardımcı olabiliriz.

normalde google selenium browser ile login olup işlerimi chrome vs tarayılardan ilerleyip yapabiliyorum fakat ekranımı meşgul ediyor tarayıcılar bu nedenle mechanize buldum mechanize tarayıcı açmadan tarayıcıların yaptıgı her şeyi yapabilen bir modül

özetle amaçım mechanize ile login ve form doldurma ilerleme işlemleri öncelik google login

Dediğim gibi, bunu mechanize ile yapamazsınız. Çünkü mechanize sayfayı statik olarak ele alır. Ama Google giriş sayfası dinamik. İsterseniz, smtplib modülüne bakın.

smtplib email için degil mi ben sayfalarda gezinmek ve forum doldurmak üzerine çözüm arıyorum mechanize ile facebook vs gibi çok platformda login ve diler işlemler var mechanize browser yaptıgı herseyini yapabiliyor tüm kaynaklarda böyle gözüküyor örnek

  • İstediğiniz bir web sitesi hakkında günün belli saatlerinde bilgi alabilir veya bilgi gönderebilirsiniz.
    • Haftalık hava durumu takibi
    • Yorum yazma
    • Mesaj gönderme
    • Bildirimleri okuma
    • Makaleleri kaydetme vs.
  • Brute force aracı yazabilirsiniz.(uzman kullanıcılar)
    • Cookie engellerini aşma
    • robots.txt dosya engelini atlatma
    • Çok sayıda User-Agent tanımlayarak farklı tarayıcılar gibi davranma
    • Wordlist yükleyerek olasılığı arttırma
    • Proxy listesi ekleyerek anonimliği arttırma
    • Yapacağınız işlemleri random modülü kullanarak ip engelinden korunma

Mechanize ile neler yapılabildiğini biliyorum. Benim size bahsettiğim şey yapamadıkları arasında. Google gibi bir firmanın giriş ekranı normal siteler gibi değildir. Javascript ağırlıklı çalışır. Mechanize kütüphanesi de Javascript yorumlayamadığı için, bu giriş sayfasında maalesef eli kolu bağlı oluyor.

Yani kısaca, bu tür javascript tabanlı giriş ekranlarını mechanize ile atlatmak imkansız. Farklı alternatiflere bakmak gerekiyor.

2 Beğeni

python için öneriniz nedir ? hangi modül kullanmalıyım mutlaka bir cözümü olmalı

Ya ben sizi yanlış anladım ya da yanlış sizde.

Python’u bilmiyorum, ama Java’da selenium, tarayıcı açılmadan kullanılabilir, imkansızlıktan dolayı başarısız olduğum bir proje vardı ve projemde selenium kullanıyordum. Bizzat okulun bilgisayarlarında test ettim.

Bence Python’da da tarayıcı açmadan selenium rahatlıkla kullanılabilir.

Ve bu iş için selenium’dan başkasını bilemiyorum. Varsa da buradan öğrenmeye açığım.

Selenium’da işlemleri pencere açmadan yapmak için phantomjs.org/download.html adresinden phantomjs’yi indirip kurun daha sonra kodunuzdaki
driver = webdriver.Firefox() satırını
driver =webdriver.PhantomJS() olarak değiştirin. Eğer windows kullanıyorsanız parantez içine phantomjs’nin yolunu yazın. Kaynak: https://stackoverflow.com/questions/5370762/how-to-hide-firefox-window-selenium-webdriver

3 Beğeni

PhantomJS artık devam ettirilmiyor. HeadlessChrome ve/veya HeadlessFirefox’a bakmanızı tavsiye ederim.

1 Beğeni

browser = webdriver.Chrome()
browser.set_window_size(480, 830)
browser.get(‘https://google.com’)
browser.set_page_load_timeout(3)

@ ismailarilik şeklinde kullanıyorum bunu PhantomJS ile örneklendirebilirmisiniz.

Chrome kullanmaya devam edin; PhantomJS artık devam ettirilmiyor.

HeadlessChrome de tarayıcı acılıyor mu ?

Demek istediğinizi bende anladım geçen gün bende bakmıştım dediğinize ve devam ettirilmediğini öğrendim çözümünü bende merak ediyorum içeride gezmek v.s ilk başta giriş yaparsınız sonra mechanize ile içeride gezinirsiniz bide öyle denemek lazım ama nasıl giriş yapıcaksınız

1 Beğeni

java ile aynı anda 500 tane aktif tarayıcı acan var python java nın yapabildiği herseyini yapabiliyor
tarayıcıyı ortadan kaldırma gerek bu konuda ciddi cözüm bulmalıyım web de iş yapan her süreçte selenium olayı ile gezintiyi tarayıcısız hale çevirmek elinizde olan bir çok proje için sınırsız imkanlar sağlıyor bu konuda örnekler ile güzel bir konu veya cevap alabilsek çok ama çok muazzam olacak

Şu sayfadaki yönergeleri takip ederseniz, istediğinizi elde edersiniz sanırım

1 Beğeni

Evet sanki yararlı gibi duruyor biri deneyip bilgilendirebilirimi ne yazıkki deneyecek ortam da değilim şuanda :slight_smile:

1 Beğeni

Hayır, açılmaz, HeadlessFirefox’ta da açılmaz aynı şekilde.

1 Beğeni

İsmail hocam işte bu çok işime yarıyacak çok teşekkürler :slight_smile:

Türkçe kaynaklarda bilgi ulmanın ne denli zor oldugunu hepimiz biliyoruz gerek buradaki gerekse cevremizdeki arkadaşlar sağolsun yardımcı oluyorlar 3 saatlik bir uğraşın sonucu google tarayıcısız login işlemini tamamladım ve geri kalan veri işlemlerini xpath ile devam ettirerek projemi bitirdim mükemmel bi iş cıktı ortaya özetle herkese faydalı olabilmek için google login kısmını altta ekliyorum oradan ilerletebilrsiniz.

import os
from selenium.webdriver.chrome.options import Options
from typing import Any, Union
from pymysql.connections import Connection
from pymysql.cursors import Cursor
from selenium.webdriver.common.keys import Keys
import pymysql
import time
from selenium import webdriver
 service = webdriver.chrome.service.Service(os.path.abspath("chromedriver"))
  service.start()


  chrome_options = Options()
  chrome_options.add_argument("--headless")

# path to the binary of Chrome Canary that we installed earlier

  browser = webdriver.Remote(service.service_url,   desired_capabilities=chrome_options.to_capabilities())
  time.sleep(1)

  browser.get('https://www.google.com/accounts/Login?hl=tr&continue=http://www.google.com')

  time.sleep(1)
  print(browser.title)

#gmail
  browser.find_element_by_xpath('//input[@type="email"]').send_keys("emailadresiniz@gmail.com" + Keys.RETURN)
  time.sleep(1)
  print(browser.title)

#sifre
  browser.find_element_by_xpath('//input[@type="password"]').send_keys("gmailşifreniz" + Keys.RETURN)
  time.sleep(1)
  print(browser.title)
4 Beğeni